jmeter 当按钮被禁用时如何退出while循环?

oipij1gg  于 2022-11-09  发布在  其他
关注(0)|答案(1)|浏览(181)

我使用了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')
}

如何解决?

de90aj5v

de90aj5v1#

你总是在查询“Next”按钮的初始状态,你需要再次“查找”它,以在点击后获得“新鲜”状态。我的期望是,当你点击“Next”按钮时,DOM会被刷新,按钮有了新的属性,并且你已经将它之前的状态存储到了一个全局变量中。

next.click()
WDS.log.info('btn50-400clicked')

//here the page has refreshed and you need to "find" the button once again

next = WDS.browser.findElement(pkg.By.xpath("//button[contains(@class,'btn btn-sm btn-light border ml-3')]"))

if (!next().isEnabled() {
    break
}

如果出现任何问题,您可以随时take a screenshot,例如:

var screenshot = WDS.browser.getScreenshotAs(pkg.OutputType.FILE)
screenshot.renameTo(new java.io.File('screenshot.png'))

或者将页面的当前HTML源代码打印到JMeter.log文件,如下所示:

WDS.log.info(WDS.browser.getPageSource())

以可视方式或通过检查其HTML定义来检查按钮状态。
更多信息:The WebDriver Sampler: Your Top 10 Questions Answered

相关问题