我通过量角器使用Selenium / Chromedriver。我切换到iframe,等待内容加载,然后计划操纵其中的元素。但它从未意识到内容已经加载。
browser.driver.switchTo().frame("myView");
browser.driver.wait(function() {
return browser.driver.isElementPresent(by.id("myDiv"))
.then(function (isPresent) {
return isPresent;
});
}, 20000, "Taking too long to load!");
myDiv肯定会在20秒内出现,但是等待()超时。
我尝试过切换到使用browser.driver.findElement(),但结果相同。
我已确定我已更新为Chromedriver 2.21(修复了之前的错误)。
任何想法我还能做错什么?
每条评论的ETA:这就是我获取错误日志的所有内容......
Message:
Error: Taking too long to load!
Wait timed out after 20069ms
Stacktrace:
Error: Taking too long to load!
Wait timed out after 20069ms
==== async task ====
Taking too long to load!
at /Users/me/Documents/My-Test/specs/myWorkflow.js:82:20
==== async task ====
at [object Object].<anonymous> (/Users/me/Documents/My-Test/specs/myWorkflow.js:79:14)
==== async task ====
Asynchronous test function: it()
Error
at [object Object].<anonymous> (/Users/me/Documents/My-Test/specs/myWorkflow.js:7:5)
at Object.<anonymous> (/Users/me/Documents/My-Test/specs/myWorkflow.js:5:1)
答案 0 :(得分:0)
我通过添加sleep语句而不是使用等待循环来解决类似的问题。在c#中我会使用thread.sleep(20000);等了20秒。我的大多数都在1到5秒的范围内。
澄清一下:我建议删除他用来检查元素的循环,而是使用简单的sleep类型命令然后与元素交互。
在使用C#的Selenium中,我使用以下语句在单击元素之前加载元素时提供固定的等待时间。这个元素恰好是一个链接,但它可以是任何元素
/