Moi*_*aja 21 javascript selenium-webdriver
我正在使用selenium-webdriverjs.我想等待显示某个元素,我已经创建了一个明确的等待,如下所示,它工作得很好,
var displayed = false;
driver.wait(function(){
driver.findElement(locator).isDisplayed().then(function(value){
displayed = value;
});
return displayed;
}, timeout);
Run Code Online (Sandbox Code Playgroud)
这是我能做的最好的还是有更好的方法来做到这一点?我问的原因是第一次调用等待回调(在我的情况下)它将始终返回false.只有在执行isDisplayed promise时,才会显示更改的值.
cou*_*udy 28
您的代码将同步返回与异步回调混合,以下代码应该做正确的事情:
return driver.wait(function() {
return driver.findElement(locator).isDisplayed();
}, timeout);
Run Code Online (Sandbox Code Playgroud)
内部函数将返回一个driver.wait等待的promise,并将其值(true/false)作为等待条件.
为了避免 webdriver 和 js 的异步风格所涉及的大部分混淆,您可以尝试使用 webdriver-sync:https : //npmjs.org/package/webdriver-sync
根据我的经验,在过多的嵌套回调之后,webdriver API 的异步版本变得难以阅读。
这当然假设您没有保持异步的要求。
免责声明:我是这个软件(webdriver-sync)的创建者
| 归档时间: |
|
| 查看次数: |
35303 次 |
| 最近记录: |