我正在编写一些 Java Webdriver 代码来自动化我的应用程序。如何正确判断页面是否已加载?该应用程序也有一些 Ajax 调用。
我已经声明了对 WebDriver 的隐式等待。
硒会为你做到这一点。或者至少它尽力了。有时它会达不到要求,你必须帮它一点忙。通常的解决方案是Implicit Wait http://seleniumhq.org/docs/04_webdriver_advanced.html#implicit-waits这解决了大部分问题。
如果你真的知道自己在做什么以及为什么这样做,那么你可以尝试编写一个通用方法来检查页面是否完全加载。然而,这并不能适用于所有网络和所有情况。
相关问题:Selenium WebDriver :等待带有 JavaScript(JS) 的复杂页面加载 https://stackoverflow.com/questions/10720325/selenium-webdriver-wait-for-complex-page-with-javascript-to-load/10726369#10726369,请参阅我的回答。
简短版本:你永远无法确定。
“正常”负载很容易 -document.readyState https://developer.mozilla.org/en/DOM/document.readyState。当然,这个是由 Selenium 实现的。有问题的事情是异步请求,AJAX,因为你永远无法判断它是否是永久完成的。当今的大多数网页都具有永久运行并始终轮询服务器的脚本。
您可以执行的各种操作位于上面的链接下。或者,像 95% 的其他人一样,使用Implicit Wait http://seleniumhq.org/docs/04_webdriver_advanced.html#implicit-waits隐含性和Explicit Wait http://seleniumhq.org/docs/04_webdriver_advanced.html#explicit-waits + ExpectedConditions http://selenium.googlecode.com/svn/trunk/docs/api/java/org/openqa/selenium/support/ui/ExpectedConditions.html在需要的地方。
例如。单击后,页面上的某些元素应该变得可见,您需要等待它:
WebDriverWait wait = new WebDriverWait(driver, 10); // you can reuse this one
WebElement elem = driver.findElement(By.id("myInvisibleElement"));
elem.click();
wait.until(ExpectedConditions.visibilityOf(elem));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)