我正在尝试使用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。
有人知道为什么硒一次只能找到1000个元素吗?我究竟做错了什么?非常感谢!
基本上,您看到的是正确的行为。尽管您知道网页中几乎有3000种这种特定类型的元素,但是:
id
为elem_id
的所有那些元素在Viewport中为可见”>您可以在How does Selenium click on elements that are 50% on screen and 50% not on screen?中找到相关的详细讨论
<iframe>
/ <frame>
标记内,并且WebDriver实例可能不具有这些元素在顶级视图中的可见性。您可以在Ways to deal with #document under iframe中找到相关的详细讨论
您可以在How to click on Load More button within Google Trends and print all the titles through Selenium and Python中找到相关的详细讨论
因此,您只能看到〜3000个奇数元素中的〜1000个。