回答

1

通常情況下,我不會使用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(... 
0

我知道這個帖子是老了,但我有同樣的問題。 @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