Selenium,你如何检查滚动位置
使用selenium和java,我需要测试一个“返回顶部”按钮,所以我做的是向下滚动页面,直到显示“返回顶部”按钮(当滚动页面的25%时显示)并单击它,此按钮将用户带到页面顶部,现在我需要检查它是否有效,可见部分是页面的顶部。 我怎么能用java做到这一点?
一般原则是在浏览器中检查window.pageYOffset
的值。 如果您的按钮完全滚动到顶部,则window.pageYOffset
的值应为0.假设driver
变量保存您的WebDriver
实例:
JavascriptExecutor executor = (JavascriptExecutor) driver; Long value = (Long) executor.executeScript("return window.pageYOffset;");
然后,您可以检查该value
是否为0. executeScript
用于在浏览器中运行JavaScript代码。
这个答案最初提到了scrollY
但在IE上没有它的支持。 它上面的MDN页面说:
对于跨浏览器兼容性,请使用
window.pageYOffset
而不是window.scrollY
。 此外,旧版本的Internet Explorer(<9)不支持任何属性,必须通过检查其他非标准属性来解决。 一个完全兼容的例子:var supportPageOffset = window.pageXOffset !== undefined; var isCSS1Compat = ((document.compatMode || "") === "CSS1Compat"); var x = supportPageOffset ? window.pageXOffset : isCSS1Compat ? document.documentElement.scrollLeft : document.body.scrollLeft; var y = supportPageOffset ? window.pageYOffset : isCSS1Compat ? document.documentElement.scrollTop : document.body.scrollTop;
感谢R. Oosterholt的“抬头”。
路易斯的回答有效,但不完全兼容跨浏览器,因为Internet Explorer不支持window.scrollY。 我建议使用window.pageYOffset – 它返回相同的值,但是跨浏览器兼容。
资料来源: https : //developer.mozilla.org/en-US/docs/Web/API/Window/scrollY
以下是带有修改代码的上述代码块:
JavascriptExecutor executor = (JavascriptExecutor) driver; Long value = (Long) executor.executeScript("return window.pageYOffset;");
另外,Ruby的语法(我用于当前位置,假设之前可以通过变量名称’driver’访问驱动程序实例):
driver.execute_script('return window.pageYOffset;')