如何使用webdriver-io在可滚动元素中滚动?我已经尝试了以下代码:
client
.scroll('#hierarchy_p')
.scroll(20, 50);或
client
.scroll('#hierarchy_p', 20, 50);但它们都没有任何效果。
发布于 2015-04-02 10:12:19
通常,我不会建议使用driver.executeScript,但在出现像webElement.setAttribute这样的东西之前,我怀疑是否有很多其他方法可以做到这一点。
用于上下滚动可滚动元素:
function scrollToFn(driver, element, scrollAmount){
return elem.getAttribute('scrollTop').then(function(val){
scrollAmount += +val; // written as +val for string to number conversion
return driver.executeScript("arguments[0].scrollTop = arguments[1]", elem, scrollAmount);
});
}要滚动到scrollable元素中的特定元素:
function scrollToInnerFn(driver, parentEle, innerEle){
return innerEle.getAttribute('offsetTop').then(function(val){
return driver.executeScript("arguments[0].scrollTop = arguments[1]", parentEle, val);
});
}注意:以上两个函数都将返回一个promise。
用法
...
var webdriver = require('selenium-webdriver');
var browser1 = new webdriver.Builder().usingServer().withCapabilities({
browserName: 'firefox'
}).build();
...
var elem = browser1.findElement(webdriver.By.css('#scrollT'));
var elem2 = browser1.findElement(webdriver.By.css('#mm'));
scrollToFn(browser1, elem, 200).then(function(){
scrollToInnerFn(browser1, elem, elem2);
}).then(...发布于 2017-02-20 23:26:30
我知道这篇文章很老,但我也有同样的问题。@mido给出的例子非常复杂,我很难理解它们,所以我找到了一种简单的方法来做到这一点。
我们必须使用命令:
browser.execute([function(){},param1,param2,....]);您希望在可滚动元素内向下滚动,因此让我们假设您的容器是一个id为id='scrollContent_body'的div。现在你所要做的就是在下面的截图下面使用:
browser.execute(function() {
// browser context - you may not access client or console
// += 60 will scroll down
// -= 60 will scroll up
document.getElementById('scrollContent_body').scrollTop += 60;
});注意:无论你的驱动是browser还是client都无关紧要。
发布于 2019-01-17 09:41:41
scrollTop方法不适用于我的用例。这就是有效的方法:
browser.execute(function() {
document.querySelector('#hierarchy_p').scrollIntoView();
});这是在Chrome中使用webdriver.io v4.14.0进行测试。
https://stackoverflow.com/questions/29385175
复制相似问题