Selenium,你如何检查滚动位置

时间:2014-09-08 22:11:12

标签: java selenium scroll

在java中使用selenium,我需要测试一个"返回顶部"按钮,所以我做的是向下滚动页面直到"返回顶部"按钮显示(当滚动页面的25%时显示)并单击它,此按钮将用户带到页面顶部,现在我需要检查它是否工作,可见部分是页面的顶部。我怎么能用java做到这一点?

3 个答案:

答案 0 :(得分:22)

一般原则是检查浏览器中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 page on it说:

  

要获得跨浏览器兼容性,请使用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对于"抬头"。

答案 1 :(得分:4)

路易斯的回答有效,但不完全跨浏览器兼容,因为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;')

答案 2 :(得分:0)

如有必要,找到滚动到一个指定div的位置,请使用以下代码:

JavascriptExecutor executor = (JavascriptExecutor) driver;
Long value = (Long) executor.executeScript("return document.getElementById('container').scrollTop;");