簡體   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