假设隐含超时为10秒。 然后我用一些XPath执行FindElements(复数!)。
问题
FindElements等待多长时间,直到决定返回? (请忽略任何语言的任何延迟执行功能。然后我将我的问题改为FindElements(...)。Count())
推理问题
我认为如果没有匹配则会等待10秒。 但是,如果至少有一场比赛,那么它会立即返回吗?在这种情况下,如果它们在10秒内被页面的javascript填充,我们将错过可能的以下元素。
我的一般问题如下:
问题改述
关于FindElements行为,哪个不好(#1或#2)是现实?
答案 0 :(得分:1)
此方法受执行时有效'implicit wait'
次的影响。当隐式等待时,只要找到的集合中有超过0个项目,此方法就会返回,或者如果达到超时,则返回空列表。
你可以做什么,这样你就不会错过任何匹配是等待页面完全加载,方法是检查document.readyState是否等于完成,然后调用driver.findElements
方法。 / p>
public void waitForPageLoaded() {
ExpectedCondition<Boolean> expectation = new
ExpectedCondition<Boolean>() {
public Boolean apply(WebDriver driver) {
return ((JavascriptExecutor) driver).executeScript("return document.readyState").toString().equals("complete");
}
};