Python Selenium find_elements_by_id()不';t返回所有元素

Python Selenium find_elements_by_id()不';t返回所有元素,python,selenium,iframe,lazy-loading,viewport,Python,Selenium,Iframe,Lazy Loading,Viewport,我正试图用Selenium(python)在网页上查找特定类型的所有元素。为了简单起见,假设他们的id是elem\u id。我正在使用以下代码段来执行此操作: all_elements = driver.find_elements_by_id("elem_id") print(str(len(all_elements))) 我知道有问题的网页上有大约3000个此类元素,但每当我打印所有元素的长度时,它总是打印1000 它确实找到了正确类型的元素(我检查过),但不知怎的,它并没有一次找到所有元素

我正试图用Selenium(python)在网页上查找特定类型的所有元素。为了简单起见,假设他们的id是
elem\u id
。我正在使用以下代码段来执行此操作:

all_elements = driver.find_elements_by_id("elem_id")
print(str(len(all_elements)))
我知道有问题的网页上有大约3000个此类元素,但每当我打印
所有元素的长度时,它总是打印
1000

它确实找到了正确类型的元素(我检查过),但不知怎的,它并没有一次找到所有元素。它还随机选择1000个元素,这意味着它既不专门选择前1000个元素,也不专门选择最后1000个元素。我试图找出硒元素的含量是否有上限,但似乎没有上限1000


有人知道为什么硒一次只能找到1000种元素吗?我做错了什么?多谢各位

从根本上说,你看到的是正确的行为。虽然您知道网页中有大约3000种这种特定类型的元素,但是:

  • 所有
    id
    elem\u id
    的元素在
您可以在中找到相关的详细讨论

  • 其中一些元素可能位于
    /
    标记中,WebDriver实例可能无法从顶层视图中看到这些元素
您可以在中找到相关的详细讨论

  • 这些元素中的一些可能会在整个过程中保持不可见
您可以在中找到相关的详细讨论


因此,在大约3000多个元素中,您只能看到大约1000个元素。

它们可能位于iFrame中。您可以发布html,这样我们就可以进行调试吗?有些页面使用“延迟加载”技术,在您滚动页面时,它们会加载元素-因此在开始时,它们可能只有1000个元素,但在滚动之后,它们可能会有更多元素。所以您可能也需要使用Selenium滚动页面。有些页面甚至是最糟糕的,因为它们可以从页面中删除你看不到的元素,当你滚动页面时,它们可能总是只有1000个元素——所以你不能滚动到底部并获取所有元素,但你必须滚动部分,只获取新元素。