页面似乎已加载但无法使用 selenium/python 访问数据

Page seems to load but not able to access data using selenium/python

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

谢谢!

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!")

Returns: Loading took too much time!

这里有几个问题。

  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 代码将在检测到已检查的条件后立即继续。