无法通过selenium webdriver(Java)在Chromedriver中向下滚动

时间:2016-01-13 05:56:22

标签: java selenium webdriver

我试图通过selenium webdriver测试滚动功能。同样适用于Firefox但不适用于Chrome驱动程序。这是我用于滚动的基本代码。

Actions a = new Actions(driver);
WebElement el = driver.findElement(By.xpath("//*[@id='dsm-frame']"));
a.moveToElement(el).clickAndHold().moveByOffset(0, 1000000).release().perform();

Action构建器在chrome中不起作用是否有任何特定原因?请告知如何在Chrome驱动程序中使用它。

由于

8 个答案:

答案 0 :(得分:3)

您可以使用JavaScriptExecutor进行滚动。

向下滚动

((JavascriptExecutor)driver).executeScript("window.scrollTo(0,document.body.scr‌​ollHeight);");

向上滚动

((JavascriptExecutor)driver).executeScript("window.scrollTo(0,0);");

答案 1 :(得分:2)

Javascript Executer版本(滚动到底部 - 最符合我的需求):

JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("window.scrollTo(0, document.body.scrollHeight);");

仅限Webdrvier版本:

driver.findElement(By.id("INSERT_A_INPUT_BOX")).sendKeys(Keys.PAGE_DOWN);

此版本仅向下滚动一页。起初它对我不起作用,因为我试图专注于一个随机元素而不是一个输入元素,但是当你专注于你可以键入的内容时它确实有用

答案 2 :(得分:1)

以下是基于我厌倦的选项的发现:

1. 动作构建器类:适用于Firefox,但不适用于Chrome。不确定它在Chrome中无效。

2. js.executeScript("window.scrollTo(0, document.body.scrollHeight);");:它在Firefox和Chrome中均无效。我想这不适合我的情况。

3. js.executeScript("arguments[0].scrollIntoView(true);",element);:它适用于Firefox和Chrome。

答案 3 :(得分:0)

我在Selenium遇到了类似的问题(包裹在Selenide):

这对我来说可以滚动到页面底部的链接:

if (isPhantomjs()){
    $(byText(linkType)).scrollTo().click();
} else {
    executeJavaScript("arguments[0].scrollIntoView(true);", $(byText(linkType)));
    $(byText(linkType)).click();
}

答案 4 :(得分:0)

向下滚动:

WebDriver driver = new ChromeDriver();
JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("window.scrollBy(0,250)", "");

OR,也

jse.executeScript("scroll(0, 250);");

向上滚动:

jse.executeScript("window.scrollBy(0,-250)", "");

OR,

jse.executeScript("scroll(0, -250);");

希望它能帮到你

答案 5 :(得分:0)

要解决此问题,您必须使用以下代码,您有90%的机会可以滚动页面

element. driver.findElement(By.xpath("/html/body"));
element.sendKeys(Keys.PAGE_DOWN);

For future query solution visit :

答案 6 :(得分:0)

我根本不是 Java 专家,但我使用 vba 的 chromedriver 并面临同样的问题。由于我无法通过 XPATH/JSON 定位 webelements,我使用页面的源代码,senkeys 选项卡,直到我搜索的 webelement 获得焦点,然后该元素成为 activeelement 所以元素上的 scrollintoview 是可访问的,我可以刷新页面的源代码...

答案 7 :(得分:0)

如果您在滚动后尝试单击元素,请尝试以下代码段。

<块引用>

Actions action = new Actions(driver);

action.moveToElement(element).click().perform();