我想检查用户是否可以在当前 Web 浏览器视图中看到一个元素而无需滚动。
我发现可以检查元素是否在页面上的某个位置。
另一个提示建议检查元素位置,但我需要获取浏览器可见窗口的尺寸加上它的x/y偏移量到0/0。
如果有人能指出一个不需要 JavaScript 代码的解决方案,我将不胜感激。
我想检查用户是否可以在当前 Web 浏览器视图中看到一个元素而无需滚动。
我发现可以检查元素是否在页面上的某个位置。
另一个提示建议检查元素位置,但我需要获取浏览器可见窗口的尺寸加上它的x/y偏移量到0/0。
如果有人能指出一个不需要 JavaScript 代码的解决方案,我将不胜感激。
您如何定义“对用户可见”?你建议如何检查?如果有高度?如果它没有被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()
方法:
然而,当考虑到边界、边距等东西时,这将不起作用。