ホームページ >Java >&#&チュートリアル >Selenium でオーバーレイによって隠された要素をクリックするにはどうすればよいですか?

Selenium でオーバーレイによって隠された要素をクリックするにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-29 14:27:10233ブラウズ

How to Click Elements Hidden by Overlays in Selenium?

Selenium でオーバーレイによって隠された要素をクリックする

Selenium ベースのオートメーションでは、オーバーレイによって隠されている要素をクリックすることが一般的な課題になることがあります。エラー メッセージ「要素 MyElement は点 (x, y) ではクリックできません...他の要素がクリックを受け取ります」は、この状況を示しています。

問題への対処

この問題を解決するには、次のアプローチを検討してください:

  • JavaScript または AJAX呼び出し:
    JavaScript または AJAX 呼び出しがクリック失敗の原因である場合は、Actions クラスを使用してみてください:
WebElement element = driver.findElement(By.id("id1"));
Actions actions = new Actions(driver);
actions.moveToElement(element).click().build().perform();
  • ビューポートにない要素:
    要素がビューポート内に表示されない場合は、JavaScriptExecutor を使用して要素を表示します。 view:
JavascriptExecutor jse1 = (JavascriptExecutor)driver;
jse1.executeScript("scroll(250, 0)"); // if the element is on top.
jse1.executeScript("scroll(0, 250)"); // if the element is at bottom.
  • ページの更新:
    要素をクリック可能になる前にページが更新される場合、待機が発生します:

    Thread.sleep(500); // replace 500 with an appropriate timeout in milliseconds
  • 要素をクリックできませんDOM:
    要素が DOM 内に存在するがクリックできない場合は、elementToBeClickable ExpectedCondition:
WebDriverWait wait2 = new WebDriverWait(driver, 10);
wait2.until(ExpectedConditions.elementToBeClickable(By.id("id1")));
  • Temporary Overlay:要素に一時的なオーバーレイがある場合は、ExplicitWait を使用します。 invisibilityOfElementLocated オーバーレイが非表示になるための ExpectedCondition:
WebDriverWait wait3 = new WebDriverWait(driver, 10);
wait3.until(ExpectedConditions.invisibilityOfElementLocated(By.xpath("ele_to_inv")));
  • Permanent Overlay:要素に永続的なオーバーレイがある場合、クリックを直接JavaScriptExecutor を使用した要素:

以上がSelenium でオーバーレイによって隠された要素をクリックするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。