使用java在SeleniumWebDriver(Selenium2)中向上或向下滚动页面
我已经在Selenium 1(又称Selenium RC)中编写了以下代码,用于使用java进行页面滚动:使用java在SeleniumWebDriver(Selenium2)中向上或向下滚动页面,java,selenium,selenium-webdriver,scroll,selenium-rc,Java,Selenium,Selenium Webdriver,Scroll,Selenium Rc,我已经在Selenium 1(又称Selenium RC)中编写了以下代码,用于使用java进行页面滚动: selenium.getEval("scrollBy(0, 250)"); Selenium 2(WebDriver)中的等效代码是什么?场景/测试步骤: 1.打开浏览器并导航到 2.向下滚动一些像素,然后向上滚动 对于向下滚动: WebDriver driver = new FirefoxDriver(); JavascriptExecutor jse = (JavascriptExe
selenium.getEval("scrollBy(0, 250)");
Selenium 2(WebDriver)中的等效代码是什么?场景/测试步骤:1.打开浏览器并导航到
2.向下滚动一些像素,然后向上滚动 对于向下滚动:
WebDriver driver = new FirefoxDriver();
JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("window.scrollBy(0,250)");
jse.executeScript("window.scrollBy(0,-250)");
OR,
jse.executeScript("scroll(0, -250);");
或者,您可以执行以下操作:
jse.executeScript("scroll(0, 250);");
对于向上滚动:
WebDriver driver = new FirefoxDriver();
JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("window.scrollBy(0,250)");
jse.executeScript("window.scrollBy(0,-250)");
OR,
jse.executeScript("scroll(0, -250);");
滚动至页面底部:
JavascriptExecutor js = ((JavascriptExecutor) driver);
js.executeScript("window.scrollTo(0, document.body.scrollHeight)");
js.executeScript("window.scrollTo(0, document.body.scrollHeight);");
js.executeScript("window.scrollTo(0, -document.body.scrollHeight);");
场景/测试步骤:1.打开浏览器并导航到
2.滚动到页面底部 方式1:使用JavaScriptExecutor 方式2:按ctrl+end 方式3:使用Java机器人类 试试这个:
动作拖动器=新动作(驱动程序);
WebElement draggablePartOfScrollbar=driver.findElement(By.xpath(“/*[@id='jobreslist\u outercontainer']/div/div[2]/div”);
//向下拖动
int numberOfPixelsToDragTheScrollbarDown=50;
对于(int i=10;i<500;i+=numberOfPixelsToDragTheScrollbarDown){
试一试{
//这会导致滚动条逐渐拖动,每次拖动10个单位
dragger.moveToElement(ScrollBar的可拖动部分)。单击并按住().moveByOffset(0,绘制ScrollBarDown的像素数)。释放().perform();
睡眠(1000L);
}捕获(异常e1){}
}
//现在反向拖动(向下)
绘制Crollbardown的像素数=-50;
对于(int i=500;i>10;i+=numberOfPixelsToDragTheScrollbarDown){
//这会导致滚动条逐渐拖动,一次拖动-10个单位
dragger.moveToElement(ScrollBar的可拖动部分)。单击并按住().moveByOffset(0,绘制ScrollBarDown的像素数)。释放().perform();
睡眠(1000L);
}
这可能不是您问题的确切答案(就WebDriver而言),但我发现java.awt
库比selenium.Keys
更稳定。
因此,使用前者的向下翻页操作将是:
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_PAGE_DOWN);
robot.keyRelease(KeyEvent.VK_PAGE_DOWN);
在SeleniumWebDriver中有很多上下滚动的方法,我总是使用Java脚本来完成同样的操作 下面是代码,如果我想向上或向下滚动,它总是对我有效
// This will scroll page 400 pixel vertical
((JavascriptExecutor)driver).executeScript("scroll(0,400)");
你可以从这里得到完整的代码
如果您想滚动查找某个元素,下面的一段代码将适用于您
je.executeScript("arguments[0].scrollIntoView(true);",element);
您将在此处获得完整的文档滚动到页面底部:
JavascriptExecutor js = ((JavascriptExecutor) driver);
js.executeScript("window.scrollTo(0, document.body.scrollHeight)");
js.executeScript("window.scrollTo(0, document.body.scrollHeight);");
js.executeScript("window.scrollTo(0, -document.body.scrollHeight);");
应在页面上添加一个滚动条,以使用以下选项选择所有元素:
Selenium.executeScript("window.scrollBy(0,450)", "");
如果列表很大,请在执行过程中多次添加滚动条。请注意,滚动仅指向页面中的某一点,例如(0450)
这个代码对我有用。作为我正在测试的页面,在向下滚动时加载。Javascript executor始终完美地完成这项工作:
((JavascriptExecutor) driver).executeScript("scroll(0,300)");
其中(0300)
分别为水平距离和垂直距离。根据您的要求设置距离
如果你是一个完美主义者,并且想在第一次尝试时获得想要向上滚动的确切距离,请使用此工具。这是一个出色的firefox插件。我不想使用JavaScript或任何外部库,所以这是我的解决方案(C#): 您还可以轻松地将其作为在任何元素上向上或向下滚动的扩展方法
JavascriptExecutor js = ((JavascriptExecutor) driver);
向下滚动:
JavascriptExecutor js = ((JavascriptExecutor) driver);
js.executeScript("window.scrollTo(0, document.body.scrollHeight)");
js.executeScript("window.scrollTo(0, document.body.scrollHeight);");
js.executeScript("window.scrollTo(0, -document.body.scrollHeight);");
向上滚动:
JavascriptExecutor js = ((JavascriptExecutor) driver);
js.executeScript("window.scrollTo(0, document.body.scrollHeight)");
js.executeScript("window.scrollTo(0, document.body.scrollHeight);");
js.executeScript("window.scrollTo(0, -document.body.scrollHeight);");
谢谢Ripon Al Wasim的回答。我做了一些改进。由于网络问题,我重试了三次,直到中断循环
driver.get(url)
# Get scroll height
last_height = driver.execute_script("return document.body.scrollHeight")
try_times = 0
while True:
# Scroll down to bottom
driver.execute_script("window.scrollBy(0,2000)")
# Wait to load page
time.sleep(scroll_delay)
# Calculate new scroll height and compare with last scroll height
new_height = driver.execute_script("return document.body.scrollHeight")
if last_height == new_height:
try_times += 1
if try_times > 3:
try_times = 0
break
last_height = new_height
Where ‘JavascriptExecutor’ is an interface, which helps executing JavaScript through Selenium WebDriver. You can use the following code to import.
Where ‘JavascriptExecutor’ is an interface, which helps executing JavaScript through Selenium WebDriver. You can use the following code to import.
其中“element”是要滚动的定位器
3.如果要在特定坐标处滚动,请使用以下JavaScript。((JavascriptExecutor)driver.executeScript(“window.scrollBy(200300)”); 其中“200300”是坐标。 4.如果您想垂直向上滚动,可以使用以下JavaScript。 ((JavascriptExecutor) executeScript(“window.scrollTo(document.body.scrollHeight,0)”强>
Where ‘JavascriptExecutor’ is an interface, which helps executing JavaScript through Selenium WebDriver. You can use the following code to import.
Where ‘JavascriptExecutor’ is an interface, which helps executing JavaScript through Selenium WebDriver. You can use the following code to import.
Where ‘JavascriptExecutor’ is an interface, which helps executing JavaScript through Selenium WebDriver. You can use the following code to import.
1.要将页面滚动到底部,请使用window.scrollTo(0,document.body.scrollHeight)作为参数 //导航到底部的代码
WebDriver driver = new ChromeDriver();
JavascriptExecutor jsExecuter = (JavascriptExecutor)driver;
jsExecuter.executeScript(window.scrollTo(0,document.body.scrollHeight));
2.要将页面滚动到顶部,请使用window.scrollTo(0,document.body.scrollTop)作为参数
//导航到顶部的代码
WebDriver driver = new ChromeDriver();
JavascriptExecutor jsExecuter = (JavascriptExecutor)driver;
jsExecuter.executeScript(window.scrollTo(0,document.body.scrollTop));
3.要向左滚动页面,请使用window.scrollTo(0,document.body.scrollLeft)作为参数
//要导航到左侧的代码
WebDriver driver = new ChromeDriver();
JavascriptExecutor jsExecuter = (JavascriptExecutor)driver;
jsExecuter.executeScript(window.scrollTo(0,document.body.scrollLeft));
4.滚动到某一点
window.scrollTo(0500)作为参数
//导航到某一点的代码,例如500在此处作为值传递
WebDriver driver = new ChromeDriver();
JavascriptExecutor jsExecuter = (JavascriptExecutor)driver;
jsExecuter.executeScript(window.scrollTo(0,500));
要直接在浏览器中检查导航,请在浏览器中打开“开发人员”工具并导航到控制台。
在控制台窗口上执行命令。滚动到(0400)
JavascriptExecutor最好向下滚动网页 JavascriptExecutor中的scrollTo函数可以实现这一点
JavascriptExecutor js = ((JavascriptExecutor) driver);
js.executeScript("window.scrollTo(0,100");
上述代码将向下滚动100个y坐标上述代码用于s
JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("window.scrollBy(0,250)");