Selenium:等待元素的宽度大于X.

时间:2017-03-30 11:07:55

标签: javascript node.js selenium selenium-webdriver selenium-chromedriver

我有一个页面可以进行一些处理并显示进度条。

当进度条的填充宽度至少为50%时,我想按下取消按钮。

如何创建自定义等待条件?

    driver.findElement(By.id('bar')).then(function (stateEl) {
      // driver.wait(until. ?? By.xpath? 
    }).then(done);

3 个答案:

答案 0 :(得分:3)

您可以使用显式driver.wait功能,返回truefalse值以释放或保留驱动程序。

http://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/index_exports_WebDriver.html#wait

您可以执行以下操作:

  driver.wait(function() {
    return Promise.all([
      driver.findElement(progressBarWrapper).getSize(),
      driver.findElement(progressBar).getSize()
    ]).then(function(sizes) {
      return (sizes[0].width / 2) <= sizes[1].width;
    });
  }, timeout);

我假设你有一个包装器(进度条的框,宽度是进度条的最大宽度)和实际的进度条。

答案 1 :(得分:0)

请尝试以下代码

WebDriverWait wait = new WebDriverWait(dr,10);  
wait.until(new ExpectedCondition<boolean>(){  
    @Override  
    public boolean apply(WebDriver d) {  
        return d.findElement(By.id("origressid")).getAttribute("value")>50%;  
    }}).click();  

答案 2 :(得分:0)

尝试以下代码,

driver.wait(function() {
return driver.findElement(progressbar_locator).getAttribute("value")
       .then(function (value) {
          return value >=50;
        })
}, 5000);

这里我假设进度条元素将具有名为“value”的属性,该属性将根据进度条百分比动态更改。在您的情况下,您需要确定一种方法来了解进度条值何时发生变化。

相关问题