【问题标题】:Find elements on Python Selenium - one element short在 Python Selenium 上查找元素 - 短一个元素
【发布时间】:2019-10-26 00:29:20
【问题描述】:

我在 selenium 上的“find_elements_by_css_selector”函数上看到了一个非常奇怪的错误。 应用一个应该返回 10 个元素的选择器,它会返回 9 个,这在我尝试过的所有不同页面示例中都是一致的。 我用javascript“querySelectorAll”测试过的选择器确实返回了10,所以css选择器工作正常。

任何人也有这个“一个元素短”的错误吗?

【问题讨论】:

  • 什么元素?什么选择器?显示它,然后我们可以检查为什么它没有得到它。对于 Selenium,它可以是不同的元素。
  • @supputuri 你错了
  • 你能发布一个最小的可重现示例吗?
  • @supputuri len() 仍为 10 但最终索引为 9(因为它从 0 开始)
  • 嗨,与此相关的指导如下:寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:minimal reproducible example.

标签: javascript python css selenium screen-scraping


【解决方案1】:

这是测试:

css = 'a[href]' # your css goes here
elements = driver.find_elements_by_css_selector(css)
print(len(elements))

elements = driver.execute_script("""
  return [...document.querySelectorAll(arguments[0])]
""", css)
print(len(elements))

我很想知道这些数字是否真的不同。如果是这样,您发现了一个错误。

【讨论】:

  • 是的,这正是我所做的并且得到了不同的数字。
  • 酷,在这种情况下,您应该在他们的 github 页面上发布问题。也许从现在开始使用第二种方式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-10
  • 1970-01-01
  • 2018-07-28
  • 2014-07-16
  • 2021-09-28
  • 2017-12-03
  • 2023-03-09
相关资源
最近更新 更多