9

我想检查用户是否可以在当前 Web 浏览器视图中看到一个元素而无需滚动。

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

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

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

4

1 回答 1

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/

然而,当考虑到边界、边距等东西时,这将不起作用。

于 2012-12-06T16:55:10.503 回答