如何使用webdriver-io在可滚动元素内滚动? 我曾尝试下面的代码:使用webdriver-io在可滚动元素内滚动?
client
.scroll('#hierarchy_p')
.scroll(20, 50);
或者
client
.scroll('#hierarchy_p', 20, 50);
但他们都没有任何效果。
如何使用webdriver-io在可滚动元素内滚动? 我曾尝试下面的代码:使用webdriver-io在可滚动元素内滚动?
client
.scroll('#hierarchy_p')
.scroll(20, 50);
或者
client
.scroll('#hierarchy_p', 20, 50);
但他们都没有任何效果。
通常情况下,我不会使用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);
});
}
滚动到特定元素滚动的元素:
function scrollToInnerFn(driver, parentEle, innerEle){
return innerEle.getAttribute('offsetTop').then(function(val){
return driver.executeScript("arguments[0].scrollTop = arguments[1]", parentEle, val);
});
}
注:上述两种职能将返回一个承诺。
使用
...
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(...
我知道这个帖子是老了,但我有同样的问题。 @mido给出的例子非常复杂,我很难理解它们,所以我找到了一个简单的方法来做到这一点。
我们必须使用.execute()命令:
browser.execute([function(){},param1,param2,....]);
你要滚动,能元素中向下滚动,让我们假设你的容器是div
ID为id='scrollContent_body'
。现在,所有你需要做的就是在文档片断低于使用波纹管介绍:
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
。