无法通过selenium webdriver(Java)在Chromedriver中向下滚动
我正试图通过SeleniumWebDriver测试滚动功能。这在Firefox中也适用,但在chrome驱动程序中不适用。这是我用来滚动的基本代码无法通过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
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);