WebDriver - 在Div中滚动

时间:2014-08-21 12:56:58

标签: java webdriver

我有一个div,其中有一个ul里面有16个li标签。这个div非常小,意味着只有4个li标签可见,你需要滚动其余部分。

每个li标签都有一个包含特定文本的链接。

我的要求是,根据我的测试用例,我需要能够点击此div中的特定链接。如果链接位于链接的可见部分,则工作正常。但是如果我必须滚动才能找到它,它就无法工作。

我尝试了几件事:

Action Builder发送密钥Keys.KEY_DOWN - 这不起作用。

Actions builder = new Actions(driver);
builder.keyDown(Keys.ARROW_DOWN).perform();

这不起作用。它给出了一个错误,说

key down / Up events only make sense for modifier keys.

我也试过以下

JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("arguments[0].scrollTop = arguments[1];",driver.findElement(By.id("<div-id>")), 100);

以上两种都不起作用。

任何人都可以提出一种在div中滚动的方法,直到找到一个我应该使用的元素?

谢谢你, 斯利拉姆

1 个答案:

答案 0 :(得分:0)

我的方法的Python代码示例(js部分 - 是您需要的)。漂亮的动画卷轴。唯一的选择是inside_element

def scroll_to_element(driver, element, inside_element=None):
    if not inside_element:
        script = """
            var elem = arguments[0];
            jQuery('html, body').animate({
                scrollTop: jQuery(elem).offset().top
                }, 'slow', null
            );
                """
    else:
        script = """
            var elem = arguments[0];
            var inside = arguments[1];
            var posArray = jQuery(arguments[0]).position();
            jQuery(inside).animate({scrollTop: posArray.top}, 'slow', null);
                 """
    driver.execute_script(script, element, inside_element)