回答

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