我使用了WebDriver采样器并编写了Selenium Java脚本-在下面的脚本中
var x = 0
var nextt = WDS.browser.findElement(pkg.By.xpath("//button[contains(@class,'btn btn-sm btn-light border ml-3')]"))
var nextisEnb = nextt.isEnabled()
while (true) {
if (nextisEnb == true) {
//if(next.isEnabled()){
++x
//java.lang.Thread.sleep(2000);
var wait9 = new org.openqa.selenium.support.ui.WebDriverWait(WDS.browser, 9000)
wait9.until(org.openqa.selenium.support.ui.ExpectedConditions.elementToBeClickable(pkg.By.xpath("//button[contains(@class,'btn btn-sm btn-light border ml-3')]")))
nextt.click();
WDS.log.info('btn50-clicked ' + x + 'isEnabled=' + nextisEnb)
//break
if (nextisEnb == false) {
break
}
}
}
当下一个按钮被禁用时,它仍然没有中断循环。它仍然在Jmeter中运行。那么我们如何才能退出循环呢?
我也用下面代码得到了同样的问题
var next = WDS.browser.findElement(pkg.By.xpath("//button[contains(@class,'btn btn-sm btn-light border ml-3')]"))
while (next.isEnabled()) {
java.lang.Thread.sleep(2000);
var wait9 = new org.openqa.selenium.support.ui.WebDriverWait(WDS.browser, 9000)
wait9.until(org.openqa.selenium.support.ui.ExpectedConditions.elementToBeClickable(pkg.By.xpath("//button[contains(@class,'btn btn-sm btn-light border ml-3')]")))
next.click();
WDS.log.info('btn50-400clicked')
}
WDS.log.info('btn2clicked')
//java.lang.Thread.sleep(3000);
if (!next.isEnabled()) {
WDS.log.info('Next button disabled')
}
如何解决?
1条答案
按热度按时间de90aj5v1#
你总是在查询“Next”按钮的初始状态,你需要再次“查找”它,以在点击后获得“新鲜”状态。我的期望是,当你点击“Next”按钮时,DOM会被刷新,按钮有了新的属性,并且你已经将它之前的状态存储到了一个全局变量中。
如果出现任何问题,您可以随时take a screenshot,例如:
或者将页面的当前HTML源代码打印到JMeter.log文件,如下所示:
以可视方式或通过检查其HTML定义来检查按钮状态。
更多信息:The WebDriver Sampler: Your Top 10 Questions Answered