解决方法
硒为您服务。或至少它尝试最好的。有时它很短,你必须帮助一点。通常的解决方案是
Implicit Wait
,解决了大多数问题。
如果你真的知道你在做什么,以及为什么要这么做,你可以尝试编写一个通用的方法来检查页面是否被完全加载。但是,对于每个网站和每种情况都不可能做到这一点。
相关问题:Selenium WebDriver : Wait for complex page with JavaScript(JS) to load,看到我的答案。
较短的版本:你永远不会确定。
“正常”负载很容易 – document.readyState
.当然,这是由Selenium实现的。有问题的事情是异步请求,AJAX,因为你永远不会告诉它是否做好。今天的大部分网页都拥有永远运行的脚本,并随时轮询服务器。
你可以做的各种事情是在上面的链接。或者像95%的其他人一样,在需要的时候使用Implicit Wait
的含义和Explicit Wait
ExpectedConditions
。
例如。点击后,页面上的某些元素应该可见,您需要等待:
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));