【问题标题】:Protractor send a scroll command to an element (div etc)量角器向元素(div 等)发送滚动命令
【发布时间】:2016-10-27 20:43:15
【问题描述】:

在量角器端到端测试中,如何设置元素(例如 div)的滚动值,而不是整个页面。

通过 jQuery,可以简单地调用例如 $('.myElement').scrollTop(100);。这是因为在我的端到端测试中,我想测试当一个特定的 <div> 滚动时,我想断言另一个 <div> 必须滚动以保持同步。

【问题讨论】:

    标签: selenium-webdriver protractor


    【解决方案1】:

    我需要相同的机制,并且我在 util 方法下创建了它,它对我来说很好用。 ;)

        element.getLocation().then(function (location) {
            return browser.executeScript('window.scrollTo(' + location.x + ' , ' + location.y + ')');
        });
    

    顺便说一句,以下也适用:

    browser.actions().mouseMove(element).perform();
    

    选择你的最爱。 ;)

    我更喜欢第一个,因为第二个也会触发 mouseOver 样式事件。

    【讨论】:

      【解决方案2】:

      selenium 不提供在元素级别滚动的方式。

      如果 jquery 代码进行滚动,然后像这样在浏览器中运行该代码

      driver.executeScript("$('.myElement').scrollTop(100);");
      

      【讨论】:

      • 是的,你是对的,你需要使用browser.executeScript("$('.myElement').scrollTop(100);");。我正在尝试这个选项并认为它不起作用,实际上它是。之后我试图通过调用var value = browser.executeScript("$('.myElement').scrollTop(100);"); 读取相同的值,当我必须添加return 关键字时它返回null。我不得不做var value = browser.executeScript("return $('.myElement').scrollTop(100);");。谢谢! :)
      • 获取 .scrollTop 不是函数??
      猜你喜欢
      • 1970-01-01
      • 2014-10-15
      • 2014-06-27
      • 1970-01-01
      • 2020-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多