如何检查元素在视口中是否可见?
How to check if element is visible in viewport?
如果我在页面底部,我如何检查某个元素是否可见,例如该元素位于页面顶部。
我需要编写一个测试,我向下滚动到页面底部,当我单击 div 时,它会将我移回页面顶部。下一步是检查我是否在那个位置。
我的想法是我只需要检查该元素是否可见,但事实证明这并不容易。有什么建议吗?
.isDisplayed() 和 .isFocused() 不是我需要的。
编辑:
我有一个想法,我需要两种方法。
第一个是获取元素的 y 坐标(我们只需要 y),但问题是 getY() returns 相对于你当前位置的数字,所以我需要一些能让我感动的东西到那个元素,然后得到 y 坐标。所以我的方法看起来像这样:
int getYCoordinat() {
// first move to the element
interact {
moveToElement(element)
}
// get y coord
return element.getY()
}
第二种方法看起来像这样:
boolean isScrolledToElement(int yCoordinateOfElement) {
int y = element.getY()
return y == yCoordinateOfElement
}
}
所以首先我会调用 getYCoordinat(),将整数存储到 yCoordinateOfElement。
然后我会点击 div 将我移动到元素并调用 isScrolledToElement(yCoordinateOfElement).
但这不起作用,因为仅当元素不可见时 moveToElement 才会将您移动到该元素。因此,如果我们停留在原地,因为 moveToElement() 没有移动我们,因为元素已经可见,我们会得到错误的 Y 坐标,它与我们的 Y 坐标不一样当我们点击 div 将我们移动到元素时获取。
Here is the only solution I could find. 基本上您需要查看元素的 bottom-right 角的像素坐标是否在 window.
范围内
取自 link:
private boolean isWebElementVisible(WebElement w) {
Dimension weD = w.getSize();
Point weP = w.getLocation();
Dimension d = driver.manage().window().getSize();
int x = d.getWidth();
int y = d.getHeight();
int x2 = weD.getWidth() + weP.getX();
int y2 = weD.getHeight() + weP.getY();
return x2 <= x && y2 <= y;
}
如果我在页面底部,我如何检查某个元素是否可见,例如该元素位于页面顶部。
我需要编写一个测试,我向下滚动到页面底部,当我单击 div 时,它会将我移回页面顶部。下一步是检查我是否在那个位置。 我的想法是我只需要检查该元素是否可见,但事实证明这并不容易。有什么建议吗?
.isDisplayed() 和 .isFocused() 不是我需要的。
编辑: 我有一个想法,我需要两种方法。
第一个是获取元素的 y 坐标(我们只需要 y),但问题是 getY() returns 相对于你当前位置的数字,所以我需要一些能让我感动的东西到那个元素,然后得到 y 坐标。所以我的方法看起来像这样:
int getYCoordinat() {
// first move to the element
interact {
moveToElement(element)
}
// get y coord
return element.getY()
}
第二种方法看起来像这样:
boolean isScrolledToElement(int yCoordinateOfElement) {
int y = element.getY()
return y == yCoordinateOfElement
}
}
所以首先我会调用 getYCoordinat(),将整数存储到 yCoordinateOfElement。 然后我会点击 div 将我移动到元素并调用 isScrolledToElement(yCoordinateOfElement).
但这不起作用,因为仅当元素不可见时 moveToElement 才会将您移动到该元素。因此,如果我们停留在原地,因为 moveToElement() 没有移动我们,因为元素已经可见,我们会得到错误的 Y 坐标,它与我们的 Y 坐标不一样当我们点击 div 将我们移动到元素时获取。
Here is the only solution I could find. 基本上您需要查看元素的 bottom-right 角的像素坐标是否在 window.
范围内取自 link:
private boolean isWebElementVisible(WebElement w) {
Dimension weD = w.getSize();
Point weP = w.getLocation();
Dimension d = driver.manage().window().getSize();
int x = d.getWidth();
int y = d.getHeight();
int x2 = weD.getWidth() + weP.getX();
int y2 = weD.getHeight() + weP.getY();
return x2 <= x && y2 <= y;
}