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

无法通过selenium webdriver(Java)在Chromedriver中向下滚动,java,selenium,webdriver,Java,Selenium,Webdriver,我正试图通过SeleniumWebDriver测试滚动功能。这在Firefox中也适用,但在chrome驱动程序中不适用。这是我用来滚动的基本代码 Actions a = new Actions(driver); WebElement el = driver.findElement(By.xpath("//*[@id='dsm-frame']")); a.moveToElement(el).clickAndHold().moveByOffset(0, 1000000).release().per

我正试图通过SeleniumWebDriver测试滚动功能。这在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 builder不能在chrome中工作有什么具体原因吗?请告知如何在Chrome驱动程序中工作


谢谢

您可以使用
JavaScriptExecutor
进行滚动

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

向上滚动


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

仅限Webdrvier版本:

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

此版本仅向下滚动一页。起初,它对我不起作用,因为我试图专注于一个随机元素而不是输入元素,但当专注于你可以输入的东西时,它确实起作用。到目前为止,我的发现基于我所了解的选项:

1.Action builder类:适用于Firefox,但不适用于Chrome。不确定为什么它不适用于Chrome

2.
js.executeScript(“window.scrollTo(0,document.body.scrollHeight);”:它在Firefox和Chrome中都不起作用。我想这不适合我的情况


3.
js.executeScript(“参数[0].ScrollingToView(true);”,元素):它在Firefox和Chrome中都能工作。

我在Selenium中遇到了类似的问题(包装在Seleniude中):

这使我能够滚动到页面底部的链接:

if (isPhantomjs()){
    $(byText(linkType)).scrollTo().click();
} else {
    executeJavaScript("arguments[0].scrollIntoView(true);", $(byText(linkType)));
    $(byText(linkType)).click();
}
对于向下滚动:

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

jse.executeScript("scroll(0, 250);");
对于向上滚动:

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


希望它能帮助你解决这个问题。你必须使用这段代码,因为你有90%的机会可以滚动页面

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


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

如果您试图在滚动后单击该元素,请尝试下面的代码片段

动作动作=新动作(驱动)

action.moveToElement(元素)。单击()。执行()


尝试
a.moveToElement(el.build().perform()
您可以尝试发送空格,如
el.sendKeys(Keys.space)尝试
((JavascriptExecutor)驱动程序).executeScript(“window.scrollTo(0,document.body.scrollHeight);”我尝试了使用a.moveToElement(el).build().perform(),但没有成功。为什么它不能在Chrome上运行,而只能在Firefox上运行呢?伙计,我没有收到任何错误。代码已在Chrome上执行,但向下滚动操作未发生。如果没有Javascript executor且仅使用Selenium API,则无法执行此操作。您可以尝试类似于driver.findElement(By.id(“”)).sendKeys(Keys.PAGE_down)的操作
对于scroll DOWN,我尝试使用sendKeys(Keys.PAGE_DOWN),但它在chrome中抛出错误“org.openqa.selenium.WebDriverException:未知错误:无法聚焦元素”。如果这些东西不起作用。然后您可以使用
JavaScriptExecutor
我尝试使用上面提到的JavaScriptExecutor向下滚动,但它引发异常**org.openqa.selenium.WebDriverException:未知错误:Runtime.evaluate引发异常:语法错误:缺失)**
jse.executeScript("window.scrollBy(0,-250)", "");
jse.executeScript("scroll(0, -250);");
element. driver.findElement(By.xpath("/html/body"));
element.sendKeys(Keys.PAGE_DOWN);