在Jmeter中检查Selenium WebDriver中的响应代码

unguejic  于 2023-10-20  发布在  其他
关注(0)|答案(1)|浏览(119)

我在Jmeter中使用Selenium WebDriver登录到一个网页,并希望检查所有链接是否正常工作。为此,我想检查一下点击链接时返回的响应代码。

var links = WDS.browser.findElements(pkg.By.cssSelector("a"));
var href;
links.forEach(myFunction);

function myFunction(item) {
    WDS.log.info("link value" + item);
    href = item.getAttribute("href");
    statusCode = new HttpResponseCode().httpResponseCodeViaGet(href);
    if(200 != statusCode) {
        System.out.println(href + " gave a response code of " + statusCode);
    }
}

但是上面的代码似乎不起作用。如果有人能帮我这个忙,我会很高兴的。另外,是否有其他方法来检查是否所有的链接都工作正常,在Jmeter Selenium Webdriver中使用JavaScript?

pod7payv

pod7payv1#

我们无法帮助您,除非您向我们展示HttpResponseCode().httpResponseCodeViaGet beast的代码以及jmeter.log文件中的相关错误消息。
如果上面的函数是你从StackOverflow复制和粘贴的,我强烈怀疑它是否会工作,因为WebDriver Sampler的语言不是你的浏览器正在执行的JavaScript,它是JavaScript的浏览器版本的有限子集(例如,那里没有XMLHttpRequest
相反,你有full access to underlying Java SDK and JMeter API,所以我建议修改你的函数如下:

var links = WDS.browser.findElements(org.openqa.selenium.By.cssSelector("a"));
var href;
links.forEach(myFunction);

function myFunction(item) {
    WDS.log.info("link value" + item);
    href = item.getAttribute("href");
    var client = org.apache.http.impl.client.HttpClientBuilder.create().build()
    var request = new org.apache.http.client.methods.HttpGet(href)
    var response = client.execute(request)
    var statusCode = response.getStatusLine().getStatusCode()
    if(200 != statusCode) {
        WDS.log.error(href + " gave a response code of " + statusCode);
    }    
}

更多信息请参阅:

相关问题