我有一个页面可以进行一些处理并显示进度条。
当进度条的填充宽度至少为50%时,我想按下取消按钮。
如何创建自定义等待条件?
driver.findElement(By.id('bar')).then(function (stateEl) {
// driver.wait(until. ?? By.xpath?
}).then(done);
答案 0 :(得分:3)
您可以使用显式driver.wait
功能,返回true
或false
值以释放或保留驱动程序。
您可以执行以下操作:
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”的属性,该属性将根据进度条百分比动态更改。在您的情况下,您需要确定一种方法来了解进度条值何时发生变化。