检查元素是否对用户真正可见

时间:2012-12-06 11:58:04

标签: selenium webdriver selenium-webdriver

我想检查用户是否可以在不滚动的情况下在当前Web浏览器视图中查看元素。

我发现可以检查元素是否在页面上的某个位置。

另一个提示建议检查元素位置但是我需要获得浏览器可见窗口的尺寸加上 x / y 偏移到 0/0

如果有人能指出我不需要JavaScript代码的解决方案,我将不胜感激。

1 个答案:

答案 0 :(得分:2)

如何定义'对用户可见'?你打算怎么检查呢? 如果它有高度?如果它没有被CSS隐藏?如果它的父元素被CSS隐藏怎么办?

最可靠的方法是使用Selenium内置的.Displayed属性(如果您使用的是C#,Java有类似的东西),并将其与jQuery的“可见”选择器结合使用:http://api.jquery.com/visible-selector/。以下示例,在C#中。

var element = Driver.FindElement(By.Id("test"));
bool isVisible = element.Displayed;
var javascriptCapableDriver = (IJavascriptExecutor)Driver;
bool jQueryBelivesElementIsVisible = javascriptCapableDriver.ExecuteScript("return $('#myElement').is(:visible);");
bool elementIsVisible = isVisible && jQueryBelievesElementIsVisible;

这将得到大多数情况。

没有客户端代码是不可能的,或者在准备中其他人找到了可以用服务器端语言完成的方式时,我非常怀疑它是否漂亮,可读或可靠。

jQuery有offset()方法:

http://api.jquery.com/offset/

但是,考虑到边界,边距,这种东西,这不会起作用。