繁体   English   中英

Selenium find_elements_by_id() 不返回所有元素

[英]Selenium find_elements_by_id() doesn't return all elements

我试图在带有 Selenium (python) 的网页上找到某种类型的所有元素。 为简单起见,假设他们的 id 是elem_id 我正在使用以下代码片段来执行此操作:

all_elements = driver.find_elements_by_id("elem_id")
print(str(len(all_elements)))

我知道有问题的网页上有大约 3000 个这种元素,但是每当我打印all_elements的长度时,它总是打印1000

它肯定找到了正确的元素(我检查过),但不知何故它没有一次找到所有元素。 它还随机选择 1000 个元素,这意味着它既不会专门选择前 1000 个元素,也不会专门选择最后 1000 个元素。 我试图找出 Selenium 可以找到多少个元素是否有上限,但似乎没有最大数量为 1000。

有谁知道为什么 Selenium 一次只能找到 1000 个元素? 我究竟做错了什么? 非常感谢!

从根本上说,您看到的是正确的行为。 尽管您知道网页中有近 3000 个这种特定类型的元素,但是:

  • idelem_id所有元素在视口中可能不可见

您可以在Selenium 如何点击屏幕上 50% 和 50% 不在屏幕上的元素中找到相关的详细讨论

  • 其中一些元素可能位于<iframe> / <frame>标签内,而WebDriver实例可能无法从顶级视图中看到这些元素。

你可以在Ways to deal with #document under iframe 中找到相关的详细讨论

  • 其中一些元素可能会通过延迟加载保持不可见

您可以在如何单击 Google 趋势中的加载更多按钮并通过 Selenium 和 Python 打印所有标题中找到相关的详细讨论

因此,在 ~3000 个奇数元素中,您只能看到 ~1000 个元素。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM