2

我有一个非常简单的过程,在循环中,我得到一个 url,等待某些元素使用 WebDriverWait 加载,然后开始处理页面源。

我遇到的问题是,如果我没有在 driver.get(url) 之间添加明确的等待时间,webdriver 可以从旧页面而不是最新页面返回元素。如果我添加显式(例如 3 秒)或调用 driver.get(url) 两次,问题就会得到解决。

有没有人遇到过这个问题或知道如何解决它?

谢谢。

4

2 回答 2

0

实际上,我在 Firefox 上使用 geckodriver 遇到过这种情况,这是因为您通过单击旧元素加载了另一个页面。该驱动程序对象需要刷新。重新加载需要遍历的页面对我有用,等待没有帮助。

driver.get(driver.current_url)

编辑:Chrome 似乎没有这个问题,驱动程序可以直接从点击的页面访问元素。

于 2018-12-07T11:13:09.743 回答
-1

这似乎是网络浏览器的问题。这就是为什么在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.
于 2017-10-13T15:08:22.800 回答