【发布时间】:2016-10-27 20:43:15
【问题描述】:
在量角器端到端测试中,如何设置元素(例如 div)的滚动值,而不是整个页面。
通过 jQuery,可以简单地调用例如 $('.myElement').scrollTop(100);。这是因为在我的端到端测试中,我想测试当一个特定的 <div> 滚动时,我想断言另一个 <div> 必须滚动以保持同步。
【问题讨论】:
标签: selenium-webdriver protractor
在量角器端到端测试中,如何设置元素(例如 div)的滚动值,而不是整个页面。
通过 jQuery,可以简单地调用例如 $('.myElement').scrollTop(100);。这是因为在我的端到端测试中,我想测试当一个特定的 <div> 滚动时,我想断言另一个 <div> 必须滚动以保持同步。
【问题讨论】:
标签: selenium-webdriver protractor
我需要相同的机制,并且我在 util 方法下创建了它,它对我来说很好用。 ;)
element.getLocation().then(function (location) {
return browser.executeScript('window.scrollTo(' + location.x + ' , ' + location.y + ')');
});
顺便说一句,以下也适用:
browser.actions().mouseMove(element).perform();
选择你的最爱。 ;)
我更喜欢第一个,因为第二个也会触发 mouseOver 样式事件。
【讨论】:
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);");。谢谢! :)