首頁 >Java >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 的自動化中,點擊被覆蓋層遮擋的元素可能是一個常見的挑戰。錯誤訊息「Element MyElement is not clickable at point (x, y)... Other element will receive the click」表示這種情況。

解決問題

要解決此問題,請考慮以下方法:

  • JavaScript 或AJAX呼叫:
  • JavaScript 或AJAX:
呼叫:
WebElement element = driver.findElement(By.id("id1"));
Actions actions = new Actions(driver);
actions.moveToElement(element).click().build().perform();
    如果JavaScript 或AJAX 呼叫導致點擊失敗,請嘗試使用Actions類別:

元素不在視口中:
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.
    如果元素在視口內不可見,請使用JavaScriptExecutor將其帶入視圖:

  • Thread.sleep(500); // replace 500 with an appropriate timeout in milliseconds
    頁面刷新:
  • 如果頁面在元素變得可點擊之前刷新,則引發等待:
元素不可點擊DOM:
WebDriverWait wait2 = new WebDriverWait(driver, 10);
wait2.until(ExpectedConditions.elementToBeClickable(By.id("id1")));
    如果元素存在於 DOM 中但不可點擊,請使用帶有 elementToBeClickable ExpectedCondition 的ExplicitWait:

暫時覆蓋:
WebDriverWait wait3 = new WebDriverWait(driver, 10);
wait3.until(ExpectedConditions.invisibilityOfElementLocated(By.xpath("ele_to_inv")));
    如果元素有暫時覆蓋,請使用ExplicitWait 與 invisibilityOfElementated ExpectedCondition讓覆蓋層變得不可見:

永久覆蓋層:
WebElement ele = driver.findElement(By.xpath("element_xpath"));
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].click();", ele);
如果元素具有永久覆蓋層,則發送點擊直接使用元素JavaScript執行器:

以上是如何點選 Selenium 中覆蓋層隱藏的元素?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn