【问题标题】:Selenium, how do you check scroll positionSelenium,你如何检查滚动位置
【发布时间】:2020-05-17 08:59:27
【问题描述】:

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

【问题讨论】:

    标签: java selenium scroll


    【解决方案1】:

    一般原则是在浏览器中查看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 (

    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 当值为 0 时需要 long 数据类型
    【解决方案2】:

    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.execute_script('return window.pageYOffset;')
    

    【讨论】:

      【解决方案3】:

      如果需要,找到滚动到指定div的位置,使用这段代码:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-02-03
        • 2013-09-26
        • 2012-12-07
        • 1970-01-01
        • 2019-06-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多