我有这样的问题:
有一个位置为 6,83 的链接被空div重叠,该 div 与整个页面重叠。
此链接不可点击,因为它是重叠的。但!当我尝试执行document.elementFromPoint(6,83)
时,它返回的不是我的 div,而是链接:(我如何检测这个 div 重叠链接?
我在 Java + WebDriver 中需要这个,但 JS 也可以是一个解决方案。
谢谢你。
UPD:(我没有足够的评价):我找到了解决方案!这很奇怪,但是如果document.elementFromPoint
调用元素的左上角坐标,即使重叠也会返回相同的元素。这就是为什么我们可以在元素的 CENTER 中检查重叠的原因。
当我询问 WebDriver 时,这是解决方案:
public static boolean isElementClickable(WebElement element) {
return element.isDisplayed()
&& element.isEnabled()
&& element.equals(getJSExecutor(getDriverFromContext(element))
.executeScript("return document.elementFromPoint" +
"(" + Integer.toString(((Locatable)element).getLocationOnScreenOnceScrolledIntoView().getX() + (element.getSize().getWidth() / 2)) +
", " + Integer.toString(((Locatable)element).getLocationOnScreenOnceScrolledIntoView().getY() + (element.getSize().getHeight() / 2)) + ")"));
}
我希望这将帮助任何有同样问题或元素在 WebDriver 中是可点击问题的人。