【问题标题】:Iterating over Web Elements using selenium Python , always excepts the second item使用 selenium Python 遍历 Web 元素,总是除了第二项
【发布时间】:2020-12-17 13:08:06
【问题描述】:

我正在尝试使用 Selenium 和 python 迭代并单击 webElements 列表。第一个元素总是很好,但第二个元素的单击总是会引发异常。 我检查了列表,列表包含了我真正想要点击的所有元素,我通过打印它们的 href 属性来做到这一点。

这是我的代码:

for img in imgs:
    try:
        time.sleep(3)
        driver.get(img.get_attribute('href'))
        # img.click()
        # I tried both click and driver.get and doesn't worked.

    except:
        print("something went wrong")
        continue
        # always second iteration enters here

    driver.back()

愿帮助者得到祝福:)

【问题讨论】:

  • 您遇到哪种类型的错误?
  • 如果可能的话,分享您尝试浏览的网站,或您“点击”时发生的操作。

标签: python python-3.x selenium selenium-webdriver web-scraping


【解决方案1】:
hrefs = [ img.get_attribute("href") for img in Imgs]

for href in hrefs:
    try:
        time.sleep(3)
        href.click()

    except Exception as e:
        print(e)
        continue


    driver.back()
  1. 总是打印你的异常,不要只是捕捉它并打印一些没有任何意义的东西

  2. 如果您在第一次单击后单击某个 href 链接,则页面可能已导航到该链接,因此第二个元素不再存在并且您的代码可以正常工作

【讨论】:

  • 非常感谢您的反馈,我对 Python 和 Selenium 还很陌生。
  • 2 的原因是什么?为什么只单击一个 webElement 后对象不再存在?
  • 假设您有一个名为 facebook 的链接,您单击它,它将导航到 facebook 。现在 Imgs 中的元素不再可用,因为您在不同的页面中。你应该得到陈旧或未找到元素的错误
  • 您可以通过首先从所有 Img 中获取 href 并将其存储到数组中然后单击它来避免这种情况
  • 更新了答案
猜你喜欢
  • 2019-05-15
  • 1970-01-01
  • 2020-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多