我想检查用户是否可以在不滚动的情况下看到当前网络浏览器 View 中的元素。
我发现可以检查该元素是否在页面上的某个位置。
另一个提示建议检查元素位置,但随后我需要获取浏览器可见窗口的尺寸及其 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()
方法:
但是,当考虑到边框、边距等此类内容时,这将不起作用。
关于selenium - 检查元素是否确实对用户可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13743143/