gpt4 book ai didi

java - 在当前 View 中定位一个元素

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:14:19 25 4
gpt4 key购买 nike

当我将方法 WebElement#findElement(By)By.cssSelector 一起使用时,它会在整个页面中搜索元素。但我想通过当前 View 限制选择。我不想让 Selenium “使用滚动条”。我怎样才能做到这一点?

最佳答案

实现此目的的方法可能是获取页面上的所有元素,然后将那些元素过滤出视口(viewport)。

WebElement.getLocation()是为此的基础工具。

如果您位于页面的左上角(加载后默认),您可以使用 window.innerHeightwindow.innerWidth (大多数浏览器,但 IE9+)。

// assuming JS is enabled for this instance of driver
JavascriptExecutor js = (JavascriptExecutor)driver;

int viewportWidth = (Integer)js.executeScript("return window.innerWidth;");
int viewportHeight = (Integer)js.executeScript("return window.innerHeight;");

List<WebElement> list = driver.findElements(By.cssSelector("whatever"));
for (Iterator<WebElement> iter = list.iterator(); iter.hasNext(); ) {
WebElement elem = iter.next();
Point p = elem.getLocation();
if ((p.getX() > viewportWidth) || (p.getY() > viewportHeight)) {
iter.remove();
}
}

如果您不能确定视口(viewport)将位于其默认位置(坐标 [0, 0]),您可以添加 window.mozInnerScreenXwindow.mozInnerScreenY (需要 Firefox 3.6+)到条件。或者,可能更好,window.scrollXwindow.scrollY .

您还必须定义是否包含部分显示的元素,并相应地调整算法(WebElement.getSize() 来拯救!)。

如果您在搜索后遇到问题,视口(viewport)发生变化,请尝试通过 window.scroll() 滚动回到原始位置。 .

关于java - 在当前 View 中定位一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9313142/

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