【问题标题】:Page seems to load but not able to access data using selenium/python页面似乎加载但无法使用 selenium/python 访问数据
【发布时间】:2021-07-21 20:18:47
【问题描述】:

我确保等待页面加载 WebDriverWait,但它仍在运行超时异常,我不知道为什么。我还检查以确保 XPath 存在于 chrome 开发人员检查器中并确认它存在。如果有人可以帮助我,这里是 sn-p。

谢谢!

url2 = 'https://www.rotorooter.com/adelantoca/'
driver.get(url2)
delay = 3
try:
    name = WebDriverWait(driver, delay).until(EC.presence_of_element_located((By.XPATH, '/html/body/app-root/div/app-not-found/div/app-local-page/app-local-map/div/div/div/div[2]/div[4]/div[1]/strong')))
    print("Page is ready!",name)
except TimeoutException:
    print("Loading took too much time!")

返回: Loading took too much time!

【问题讨论】:

  • 改变delay=10/20的值怎么样?在那之后也不起作用,那个元素不在那个网站上。
  • @Xitiz 我把它改成了delay=10/20,它还是一样。我在开发人员控制台的主要帖子中添加了一个屏幕截图,显示它在我搜索时找到了 xpath。任何想法为什么会发生这种情况?
  • 你改变了 10/20 或 1st 10 和 2nd 20
  • 我写的和你写的完全一样。我不确定说实话到底是什么意思。现在我假设您的意思是将其更改为 10 到 20 秒而不是 3 秒。我将延迟更改为 20 秒,但它仍然超时

标签: python selenium-webdriver xpath webdriverwait


【解决方案1】:

这里有几个问题。

  1. 主要问题是您正在检查的元素远离最初可见的屏幕视图。因此,当页面打开时,在执行向下滚动之前不会加载此元素。这就是您的 WebDriverWait 超时失败的原因。
  2. 您不应该使用自动生成的定位器,例如/html/body/app-root/div/app-not-found/div/app-local-page/app-local-map/div/div/div/div[2]/div[4]/div[1]/strong。它们极其不可靠且易损坏。
  3. 建议为WebDriverWaits 使用更大的超时时间。制作它们也应该导致由低互联网/慢网页引起的错误错误。在正常情况下,它们不会导致额外的运行时间,因为 Selenium 代码将在检测到检查条件后立即继续运行。

【讨论】:

  • 感谢您的澄清。关于您的第二点,是否有更安全的方法来写出 xpath?谢谢。
  • 当然。您必须学习如何创建正确的定位器。学习一些教程并进行一些练习。没有什么比学习和实践更好的了
  • 太棒了!我认为自动生成的方法是唯一的方法!感谢您的帮助!
  • 不!他们真的非常不可靠。当我在这里看到带有自动生成的定位器的问题时,经常打开链接却看不到这些元素。这些是刚刚加载的页面上使用的定位器。没有在那里执行的操作。在大多数情况下,通过在页面上执行操作,此类定位器会立即被破坏......
猜你喜欢
  • 2020-01-29
  • 1970-01-01
  • 2013-02-19
  • 1970-01-01
  • 2018-09-03
  • 1970-01-01
  • 2013-10-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多