首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用webdriver-io在可滚动元素中滚动?

使用webdriver-io在可滚动元素中滚动?
EN

Stack Overflow用户
提问于 2015-04-01 15:30:19
回答 3查看 3.7K关注 0票数 0

如何使用webdriver-io在可滚动元素中滚动?我已经尝试了以下代码:

代码语言:javascript
复制
client
.scroll('#hierarchy_p')
.scroll(20, 50);

代码语言:javascript
复制
client
.scroll('#hierarchy_p', 20, 50);

但它们都没有任何效果。

EN

回答 3

Stack Overflow用户

发布于 2015-04-02 10:12:19

通常,我不会建议使用driver.executeScript,但在出现像webElement.setAttribute这样的东西之前,我怀疑是否有很多其他方法可以做到这一点。

用于上下滚动可滚动元素:

代码语言:javascript
复制
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元素中的特定元素:

代码语言:javascript
复制
function scrollToInnerFn(driver, parentEle, innerEle){
    return innerEle.getAttribute('offsetTop').then(function(val){
        return driver.executeScript("arguments[0].scrollTop = arguments[1]", parentEle, val);
    });
}

注意:以上两个函数都将返回一个promise。

用法

代码语言:javascript
复制
...
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(...
票数 1
EN

Stack Overflow用户

发布于 2017-02-20 23:26:30

我知道这篇文章很老,但我也有同样的问题。@mido给出的例子非常复杂,我很难理解它们,所以我找到了一种简单的方法来做到这一点。

我们必须使用命令:

代码语言:javascript
复制
browser.execute([function(){},param1,param2,....]);

您希望在可滚动元素内向下滚动,因此让我们假设您的容器是一个id为id='scrollContent_body'div。现在你所要做的就是在下面的截图下面使用:

代码语言:javascript
复制
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都无关紧要。

票数 0
EN

Stack Overflow用户

发布于 2019-01-17 09:41:41

scrollTop方法不适用于我的用例。这就是有效的方法:

代码语言:javascript
复制
browser.execute(function() {
    document.querySelector('#hierarchy_p').scrollIntoView();
});

这是在Chrome中使用webdriver.io v4.14.0进行测试。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29385175

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档