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;')