selenium - 检查元素是否确实对用户可见

标签 selenium webdriver selenium-webdriver

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

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

另一个提示建议检查元素位置,但随后我需要获取浏览器可见窗口的尺寸及其 x/y0/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() 方法:

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

但是,当考虑到边框、边距等此类内容时,这将不起作用。

关于selenium - 检查元素是否确实对用户可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13743143/

相关文章:

javascript - 如何对非 JavaScript 应用程序进行自动化测试?

java - Selenium : Handling Loading screens obscuring the web elements.(Java)

java - Selenium InternetExplorerDriver 没有将焦点放在窗口上

java - Selenium Webdriver -dragAndDrop 在 Firefox 32 中不起作用

javascript - 他们是否有任何方法可以出于测试目的禁用粘性页眉/页脚/内容

python - 无法从 zillow 网站上删除某些元素

java - 使用 Selenium WebDriver 按下按钮

python - X秒后关闭Selenium webdriver

python - Py.Test : Report using --cov, 排除了报告中的一些 'def' 并且没有显示任何失败

javascript - Driver.quit() 不会关闭浏览器