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

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

Mary-Kate Olsen
发布: 2024-12-29 14:27:10
原创
238 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板