在使用Selenium Webdriver 時遇到ElementNotInteractableException 錯誤時,它指示某個元素存在於HTML DOM 上,但處於阻止互動的狀態。以下是解決此問題的分步指南:
ElementNotInteractableException,一種W3C 異常,當元素無法進行交互時會出現由於其可及性或可見性受到阻礙。這可能有多種原因,我們將在以下解決方案中探討和解決。
識別和刪除臨時檔案覆蓋:
如果另一個Web🎜暫時覆寫目標元素,您可以將ExplicitWait (WebDriverWait) 與ExpectedCondition 的 invisibilityOfElementLocated 結合使用。這將暫停執行,直到阻礙元素變得不可見。然而,更精確的方法是使用 elementToBeClickable,確保目標元素在嘗試與其互動之前處於可點擊狀態。
以下是兩個解決方案的程式碼範例:
WebDriverWait wait2 = new WebDriverWait(driver, 10); wait2.until(ExpectedConditions.invisibilityOfElementLocated(By.xpath("xpath_of_element_to_be_invisible"))); driver.findElement(By.xpath("xpath_element_to_be_clicked")).click();
WebDriverWait wait1 = new WebDriverWait(driver, 10); WebElement element1 = wait1.until(ExpectedConditions.elementToBeClickable(By.xpath("xpath_of_element_to_be_clicked"))); element1.click();
解決永久問題疊加層:
如果疊加層阻擋目標元素是永久性的,則可以使用JavascriptExecutor 介面。這允許您在瀏覽器中執行 JavaScript 程式碼,包括單擊所需的元素。
WebElement ele = driver.findElement(By.xpath("element_xpath")); JavascriptExecutor executor = (JavascriptExecutor)driver; executor.executeScript("arguments[0].click();", ele);
以上是為什麼我在 Selenium 中遇到 ElementNotInteractableException,以及如何修復它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!