Java Selenium webdriver 2.47.1如何等待页面重新加载

Java Selenium webdriver 2.47.1如何等待页面重新加载,java,selenium-webdriver,Java,Selenium Webdriver,我正在使用webdriver(java)进行一个独特的测试,在这个测试中,当您登录时,页面会自动重新加载,我无法等待元素加载,因为在重新加载之前它已经在那里了。到目前为止,我能让它工作的唯一方法是使用thread.sleep,有没有办法监听页面刷新?解决这个问题的一个方法是,获取对您需要的元素的引用,该元素同时出现在登录页面和重新加载的页面上。 然后,您可以使用ExpectedConditions.stalenessOf,然后您可以确定该元素已从DOM中删除并创建了一个新元素。这个方法不能保证最

我正在使用webdriver(java)进行一个独特的测试,在这个测试中,当您登录时,页面会自动重新加载,我无法等待元素加载,因为在重新加载之前它已经在那里了。到目前为止,我能让它工作的唯一方法是使用thread.sleep,有没有办法监听页面刷新?

解决这个问题的一个方法是,获取对您需要的元素的引用,该元素同时出现在登录页面和重新加载的页面上。 然后,您可以使用
ExpectedConditions.stalenessOf
,然后您可以确定该元素已从DOM中删除并创建了一个新元素。这个方法不能保证最后一部分,但至少你知道旧元素已经消失了

代码可能如下所示:

WebElement elementOldPage = driver.findElement(By.id("yourid"));

... do login etc ...

WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.stalenessOf(elementOldPage));

WebElement elementNewPage = driver.findElement(By.id("yourid"));
在Kim Schiller的基础上,您可能会对以下代码感兴趣。由于睡眠的原因,它肯定不是完美的,所以可以自由地提出改进建议,使其更加防弹。还要注意,我不是硒专家

if分支等待html中的顶级节点在页面重新加载时失效。else分支只是等待驱动程序url与请求url匹配,以防加载其他页面

def安全页面加载(url):
如果driver.current_url==url:
tmp=驱动程序。通过xpath('/html')查找元素
获取驱动程序(url)
WebDriverWait(驱动程序,2)。直到(预期条件。过时(tmp))
其他:
获取驱动程序(url)
while(驱动程序当前url)!=网址:
睡眠(0.3)
睡眠(0.3)

如果我能帮助别人,我会很高兴的。

谢谢,我会试试这个。