ホームページ > Java > &#&チュートリアル > Selenium WebDriver が ElementNotInteractableException をスローするのはなぜですか? それを修正するにはどうすればよいですか?

Selenium WebDriver が ElementNotInteractableException をスローするのはなぜですか? それを修正するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-11-29 12:02:14
オリジナル
861 人が閲覧しました

Why Does Selenium WebDriver Throw an ElementNotInteractableException, and How Can I Fix It?

Selenium WebDriver が ElementNotInteractableException をスローする: トラブルシューティングと解決策

概要:

Selenium WebDriver では、 ElementNotInteractableExceptionこれは、対話に適した状態ではない要素を対話しようとしたときによく発生します。このエラーは、次のようないくつかの理由で発生する可能性があります。

ElementNotInteractableException の理由:

  • 一時的なオーバーレイ: 他の要素が一時的にオーバーレイされる可能性があります。ターゲット要素をブロックし、アクセスできなくなります。インタラクション。
  • 永続オーバーレイ: 永続要素はターゲット要素を永続的に覆い、クリックを防ぐ可能性があります。

ElementNotInteractableException の解決策:

1.明示的な待機の使用:

  • WebDriverWait と ExpectedConditions.elementToBeClickable を使用して、ターゲット要素をクリック可能になるまで待機してから操作します。

2.永続的なオーバーレイの処理:

  • WebDriver インスタンスを JavascriptExecutor にキャストし、ターゲット要素で JavaScript click() メソッドを直接実行します。

特定の問題指定されたコード内:

Gmail ログイン用の指定されたコードパスワードを入力しようとすると、ElementNotInteractableException が発生します。これは、コードがキーを送信しようとするときにパスワード フィールドが完全にレンダリングされていないことが原因である可能性があります。

提供されたコードの解決策:

キーを送信する前にパスワードフィールドをクリックできるようにします。修正されたコードは次のとおりです。

System.setProperty("webdriver.gecko.driver", "C:\Users\Ruchi\workspace2\SeleniumTest\jar\geckodriver-v0.17.0-win64\geckodriver.exe");
WebDriver driver = new FirefoxDriver();
driver.manage().window().maximize();
String url = "https://accounts.google.com/signin";
driver.get(url);
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
WebElement email_phone = driver.findElement(By.xpath("//input[@id='identifierId']"));
email_phone.sendKeys("[email protected]");
driver.findElement(By.id("identifierNext")).click();
WebElement password = driver.findElement(By.xpath("//input[@name='password']"));
WebDriverWait wait = new WebDriverWait(driver, 20);
wait.until(ExpectedConditions.elementToBeClickable(password)); // Explicit wait
password.sendKeys("test1");
driver.findElement(By.id("passwordNext")).click();
ログイン後にコピー

このコードでは明示的な待機が導入され、パスワード フィールドが操作を試行する前に HTML DOM で適切にレンダリングされるようになり、ElementNotInteractableException の問題が効果的に解決されます。

以上がSelenium WebDriver が ElementNotInteractableException をスローするのはなぜですか? それを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート