首頁 > Java > java教程 > 如何點選 Selenium 中覆蓋層隱藏的元素?

如何點選 Selenium 中覆蓋層隱藏的元素?

Mary-Kate Olsen
發布: 2024-12-29 14:27:10
原創
225 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板