陳舊元素引用:揭示原因並尋找解決方案
在Selenium 中,遇到「陳舊元素引用」異常可能會令人引用沮喪,因為它表明被引用的元素不再附加到頁面文件。當 DOM 發生重大變更(例如動態載入或頁面導覽)時,通常會發生此錯誤。
要解決此問題,確定觸發異常的確切程式碼行至關重要。在提供的程式碼中,導致錯誤的行似乎是:
<code class="java">driver.findElement(By.xpath(String.format(BenefitStatLi, i))).click();</code>
此行嘗試點擊基於格式化 XPath 字串的元素。但是,在執行點擊時,底層元素可能已經被刪除或修改,從而導致陳舊元素引用異常。
這個問題的根本原因是程式碼執行時 DOM 不穩定。為了解決這個問題,可以考慮實作一種重試機制,等待元素再次可用後再點擊它。以下是此類重試的範例:
<code class="java">try { // Attempt to click on the element driver.findElement(By.xpath(String.format(BenefitStatLi, i))).click(); } catch (org.openqa.selenium.StaleElementReferenceException ex) { // Element is not yet available, so wait and try again Thread.sleep(200); // Replace with appropriate wait time driver.findElement(By.xpath(String.format(BenefitStatLi, i))).click(); }</code>
透過在重試點擊之前引入等待時間,程式碼為DOM 提供了足夠的時間來穩定並確保元素在繼續之前存在且可單擊。
以上是如何處理 Selenium 中的「過時元素引用」異常?的詳細內容。更多資訊請關注PHP中文網其他相關文章!