gpt4 book ai didi

java - 当元素已经进入 View 时,Selenium 滚动到 View 中不起作用

转载 作者:行者123 更新时间:2023-12-01 18:05:42 27 4
gpt4 key购买 nike

我经历过这种滚动到 View 中的行为。通常,我使用操作或 JavaScript 将元素滚动到 View 中,如下所示:

Actions actions = new Actions(driver());
actions.moveToElement(element).build().perform();

js().executeScript("arguments[0].scrollIntoView();", element);

当元素超出视口(viewport)时,它们都可以正常工作。但有时,我的元素已经在视口(viewport)内,然后当它到达这些命令时,它实际上将这些元素滚动到 View 之外,并且测试失败,因为它不可点击。

有人遇到过同样的问题吗?有什么解决办法吗?

最佳答案

您可以检查元素是否在视口(viewport)中,并根据 boolean 值,您可以放置​​操作,以查明元素是否在我使用的视口(viewport)中

public static Boolean isVisibleInViewport(WebElement element) {
WebDriver driver = ((RemoteWebElement)element).getWrappedDriver();

return (Boolean)((JavascriptExecutor)driver).executeScript(
"var elem = arguments[0], " +
" box = elem.getBoundingClientRect(), " +
" cx = box.left + box.width / 2, " +
" cy = box.top + box.height / 2, " +
" e = document.elementFromPoint(cx, cy); " +
"for (; e; e = e.parentElement) { " +
" if (e === elem) " +
" return true; " +
"} " +
"return false; "
, element);
}

Reference

关于java - 当元素已经进入 View 时,Selenium 滚动到 View 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60562711/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com