首頁 >後端開發 >Python教學 >為什麼我的 Selenium WebDriverWait 無法在新開啟的視窗中找到元素?

為什麼我的 Selenium WebDriverWait 無法在新開啟的視窗中找到元素?

Barbara Streisand
Barbara Streisand原創
2024-12-21 19:30:11164瀏覽

Why is My Selenium WebDriverWait Failing to Find Elements in a Newly Opened Window?

WebDriverWait 未如預期運作

您正在利用 Selenium 從網頁擷取資料。此頁麵包含一個「custom_cols」按鈕,可啟動用於列選擇的視窗。這個新視窗有時需要幾秒鐘(具體來說,大約 5 秒)來加載。

為了處理這種延遲,您使用了具有 20 秒延遲的 WebDriverWait。奇怪的是,儘管元素顯示在螢幕上,但有時它無法在新視窗中找到元素。此問題大約每十次嘗試發生一次。

有趣的是,在程式碼中的其他位置使用 WebDriverWait 可以按預期工作,確保元素在點擊它們之前可見。

您的查詢圍繞新元素中的原因展開儘管使用 WebDriverWait 來檢測視窗的可見性,但視窗仍未被識別為可見。

建議解決方案:

問題源自於您在嘗試點擊元素時使用 WebDriverWait 的 Presence_of_element_ located() 方法而不是 element_to_be_clickable() 方法。

解決此問題,取代以下內容line:

myElem = WebDriverWait(self.browser, delay).until(EC.presence_of_element_located((By.XPATH , xpath)))

with:

myElem = WebDriverWait(self.browser, delay).until(EC.element_to_be_clickable((By.XPATH , xpath)))

了解 WebDriverWait方法:

下面提供了對上述三個方法的進一步說明methods:

  1. presence_of_element_ located: 驗證網頁DOM 上元素是否存在,無論其可見性或可互動性如何。
  2. visibility_of_element_ located: 確保元素存在、可見且尺寸大於0.
  3. element_to_be_clickable:可保證元素可用於成功點擊。

以上是為什麼我的 Selenium WebDriverWait 無法在新開啟的視窗中找到元素?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn