我有一个非常简单的过程,在循环中,我得到一个 url,等待某些元素使用 WebDriverWait 加载,然后开始处理页面源。
我遇到的问题是,如果我没有在 driver.get(url) 之间添加明确的等待时间,webdriver 可以从旧页面而不是最新页面返回元素。如果我添加显式(例如 3 秒)或调用 driver.get(url) 两次,问题就会得到解决。
有没有人遇到过这个问题或知道如何解决它?
谢谢。
我有一个非常简单的过程,在循环中,我得到一个 url,等待某些元素使用 WebDriverWait 加载,然后开始处理页面源。
我遇到的问题是,如果我没有在 driver.get(url) 之间添加明确的等待时间,webdriver 可以从旧页面而不是最新页面返回元素。如果我添加显式(例如 3 秒)或调用 driver.get(url) 两次,问题就会得到解决。
有没有人遇到过这个问题或知道如何解决它?
谢谢。
实际上,我在 Firefox 上使用 geckodriver 遇到过这种情况,这是因为您通过单击旧元素加载了另一个页面。该驱动程序对象需要刷新。重新加载需要遍历的页面对我有用,等待没有帮助。
driver.get(driver.current_url)
编辑:Chrome 似乎没有这个问题,驱动程序可以直接从点击的页面访问元素。
这似乎是网络浏览器的问题。这就是为什么在driver.get(url)
我通常检查之后,如果driver.get()
成功:
driver.get(url)
sleep(n_seconds) #that is not necessary.
if driver.current_url == url:
#do something
else:
#try again to get the page or wait more.