Selenium Webdriver の使用中に ElementNotInteractableException エラーが発生した場合、これは、要素が HTML DOM 上に存在するが、相互作用ができない状態です。この問題を解決するためのステップバイステップのガイドは次のとおりです。
W3C 例外である ElementNotInteractableException は、要素が操作にアクセスできない場合に発生します。アクセシビリティまたは可視性が妨げられるため。これにはさまざまな理由が考えられますが、次の解決策で調査して対処します。
一時的なユーザーの特定と削除オーバーレイ:
別の WebElement がターゲット要素を一時的にオーバーレイする場合は、ExpectedCondition の invisibilityOfElementLocated と組み合わせて ExplicitWait (WebDriverWait) を使用できます。これにより、障害要素が表示されなくなるまで実行が一時停止されます。ただし、より正確なアプローチは、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 中国語 Web サイトの他の関連記事を参照してください。