我试图通过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驱动程序中使用它。
由于
答案 0 :(得分:3)
您可以使用JavaScriptExecutor
进行滚动。
向下滚动
((JavascriptExecutor)driver).executeScript("window.scrollTo(0,document.body.scrollHeight);");
向上滚动
((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);
答案 6 :(得分:0)
我根本不是 Java 专家,但我使用 vba 的 chromedriver 并面临同样的问题。由于我无法通过 XPATH/JSON 定位 webelements,我使用页面的源代码,senkeys 选项卡,直到我搜索的 webelement 获得焦点,然后该元素成为 activeelement 所以元素上的 scrollintoview 是可访问的,我可以刷新页面的源代码...
答案 7 :(得分:0)
如果您在滚动后尝试单击元素,请尝试以下代码段。
<块引用>Actions action = new Actions(driver);
action.moveToElement(element).click().perform();