Rumah >Java >javaTutorial >Bagaimana untuk Mengklik Elemen yang Disembunyikan oleh Tindanan dalam Selenium?

Bagaimana untuk Mengklik Elemen yang Disembunyikan oleh Tindanan dalam Selenium?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-29 14:27:10215semak imbas

How to Click Elements Hidden by Overlays in Selenium?

Mengklik Elemen Disembunyikan oleh Tindanan dalam Selenium

Dalam automasi berasaskan Selenium, mengklik pada elemen yang dikaburkan oleh tindanan boleh menjadi cabaran biasa . Mesej ralat "Elemen MyElement tidak boleh diklik pada titik (x, y)... Elemen lain akan menerima klik" menunjukkan keadaan ini.

Mengatasi Isu

Untuk menyelesaikan isu ini, pertimbangkan pendekatan berikut:

  • JavaScript atau AJAX Panggilan:
    Jika panggilan JavaScript atau AJAX menyebabkan kegagalan klik, cuba gunakan kelas Tindakan:
WebElement element = driver.findElement(By.id("id1"));
Actions actions = new Actions(driver);
actions.moveToElement(element).click().build().perform();
  • Elemen Tiada dalam Viewport:
    Jika elemen tidak kelihatan dalam viewport, gunakan JavaScriptExecutor untuk membawanya ke dalam paparan:
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.
  • Muat Semula Halaman:
    Jika halaman dimuat semula sebelum elemen boleh diklik, dorong penantian:

    Thread.sleep(500); // replace 500 with an appropriate timeout in milliseconds
  • Elemen Tidak Boleh Diklik masuk DOM:
    Jika elemen wujud dalam DOM tetapi tidak boleh diklik, gunakan ExplicitWait dengan elementToBeClickable ExpectedCondition:
WebDriverWait wait2 = new WebDriverWait(driver, 10);
wait2.until(ExpectedConditions.elementToBeClickable(By.id("id1")));
  • Tindanan Sementara:
    Jika elemen mempunyai tindanan sementara, gunakan ExplicitWait dengan invisibilityOfElementLocated ExpectedCondition untuk tindanan menjadi halimunan:
WebDriverWait wait3 = new WebDriverWait(driver, 10);
wait3.until(ExpectedConditions.invisibilityOfElementLocated(By.xpath("ele_to_inv")));
  • Tindanan Kekal:
    Jika unsur mempunyai tindanan kekal, hantar klik terus ke elemen menggunakan JavaScriptExecutor:
WebElement ele = driver.findElement(By.xpath("element_xpath"));
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].click();", ele);

Atas ialah kandungan terperinci Bagaimana untuk Mengklik Elemen yang Disembunyikan oleh Tindanan dalam Selenium?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn