作者:mobiledu2502923963 | 来源:互联网 | 2023-01-28 20:32
如何验证元素在视口中是否可见(浏览器的可见性)或不使用Selenium?
我尝试使用下面的代码,但Point对象(Y值)返回巨大的值,因为页面是可滚动的.这里有元素维度,位置和浏览器的维度,并比较它们.
Dimension weD = element.getSize(); //to get the element Dimensions
Point weP = element.getLocation(); // getting the location of the element in the page.
Dimension d = driver.manage().window().getSize(); // To get the browser dimensions
int x = d.getWidth(); //browser width
int y = d.getHeight(); //browser height
int x2 = weD.getWidth() + ewp.getX();
int y2 = weD.getHeight() + ewp.getY();
return x2 <= x && y2 <= y;
如果有人参与其中,你能否分享一下解决方案?
1> Florent B...:
它不可能直接通过API,因此您必须使用脚本注入.
确定元素在视口中是否可见的最佳方法是使用document.elementFromPoint将元素放在假定位置.如果它不在视口中,则返回null,如果不是,则返回元素或后代.
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);
}