硒,如何检查滚动位置
使用硒与java,我需要测试一个“返回顶部”按钮,所以我所做的是向下滚动页面,直到显示“返回顶部”按钮(当滚动页面的25%时显示它)并单击它,这个按钮将用户带到页面顶部,现在我需要检查它是否有效,可见部分是页面的顶部。我如何使用java做到这一点?
使用硒与java,我需要测试一个“返回顶部”按钮,所以我所做的是向下滚动页面,直到显示“返回顶部”按钮(当滚动页面的25%时显示它)并单击它,这个按钮将用户带到页面顶部,现在我需要检查它是否有效,可见部分是页面的顶部。我如何使用java做到这一点?
一般原理是在浏览器中检查 的值。如果您的按钮完全滚动回顶部,则值应为0。假设变量包含您的实例:window.pageYOffset
window.pageYOffset
driver
WebDriver
JavascriptExecutor executor = (JavascriptExecutor) driver;
Long value = (Long) executor.executeScript("return window.pageYOffset;");
然后,您可以检查该值为 0。 用于在浏览器中运行 JavaScript 代码。value
executeScript
这个答案最初提到,但在IE上不支持它。上面的MDN页面说:scrollY
为了跨浏览器兼容,请使用 代替 。此外,较旧版本的 Internet Explorer (< 9) 不支持任何一个属性,必须通过检查其他非标准属性来解决。一个完全兼容的示例:
window.pageYOffset
window.scrollY
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的“抬头”。
Louis的答案有效,但不完全跨浏览器兼容,因为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;')