首页 >Java >java教程 >如何点击 Selenium 中覆盖层隐藏的元素?

如何点击 Selenium 中覆盖层隐藏的元素?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-29 14:27:10215浏览

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 调用导致点击失败,请尝试使用 Actions 类:
WebElement element = driver.findElement(By.id("id1"));
Actions actions = new Actions(driver);
actions.moveToElement(element).click().build().perform();
  • 元素不在视口中:
    如果元素在视口内不可见,请使用JavaScriptExecutor将其带入视图:
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 的 ExplicitWait:
WebDriverWait wait2 = new WebDriverWait(driver, 10);
wait2.until(ExpectedConditions.elementToBeClickable(By.id("id1")));
  • 临时覆盖:
    如果元素有临时覆盖,请使用ExplicitWait 与 invisibilityOfElementLocated ExpectedCondition 使覆盖层变得不可见:
WebDriverWait wait3 = new WebDriverWait(driver, 10);
wait3.until(ExpectedConditions.invisibilityOfElementLocated(By.xpath("ele_to_inv")));
  • 永久覆盖层:
    如果元素具有永久覆盖层,则发送单击直接使用元素JavaScript执行器:
WebElement ele = driver.findElement(By.xpath("element_xpath"));
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].click();", ele);

以上是如何点击 Selenium 中覆盖层隐藏的元素?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn