如何使用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
。