如何使用 JavaScriptExecutor 在selenium中向下滚动到页面底部
Selenium是一种开源流行的基于 Web 的自动化工具。使用selenium的主要优点是,它支持所有浏览器,如 Google Chrome、Microsoft Edge、Mozilla Firefox 和 Safari,适用于所有主要操作系统,其脚本用各种语言编写,如Java、 Python、JavaScript、C# 等。在本文中,我们将使用Java和selenium来自动滚动网页。
滚动是任何网页的重要功能,要向下滚动网页,我们使用 JavaScriptExecutor。 javascriptexecutor 是一个允许从Selenium脚本运行 JavaScript 方法的接口。
安装:要使用 JavaScriptExecutor,我们需要在我们的系统中安装Java和Selenium,这是一个浏览器的 Web 驱动程序,也是一个代码编辑器的 IDE。
- Eclipse IDE:在下载之前还要确保您的设备具有Java JDK。如果没有,安装Java参考这个:How to Download and Install Java for 64-bit machine?。并通过参考这篇文章 Eclipse IDE for Java Developers 安装 Eclipse IDE
- Selenium:在此处下载Selenium最新的稳定版本
- Web 驱动程序:在此处根据您的版本下载 Microsoft Edge Web 驱动程序
句法:
- JavaScript执行器
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("window.scrollBy(0,document.body.scrollHeight)", "");
- 向下滚动到页面底部:
window.scrollBy(0,document.body.scrollHeight)
Selenium使用 Javascript 中的 execute_script() 方法运行命令。为了向下滚动到页面底部,我们必须将 (0, document.body.scrollHeight) 作为参数传递给方法 scrollBy()。
让我们考虑一个测试用例,我们将尝试在 Edge 浏览器中自动化以下场景。
- 启动边缘浏览器
- 最大化浏览器。
- 打开网址:https://www.geeksforgeeks.org/
- 使用 JavaScriptExecutor 向上滚动到页面底部
第 1 步:将系统属性“webdriver.edge.driver”设置为 EdgeDriver.exe 文件的路径,并实例化 EdgeDriver 类。
Javascript
public class geeksforgeeks {
public static void main(String args[]) {
System.setProperty("webdriver.edge.driver",
"C:\\Users\\ADMIN\\Documents\\Selinium\\msedgedriver.exe");
// Instantiate a EdgeDriver class.
WebDriver driver = new EdgeDriver();
//Maximize the browser
}
}
Javascript
driver.manage().window().maximize();
// Launch Website
driver.get("https://www.geeksforgeeks.org/");
Javascript
JavascriptExecutor js = (JavascriptExecutor) driver;
//Scroll down till the bottom of the page
js.executeScript("window.scrollBy(0,document.body.scrollHeight)");
Java
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.edge.EdgeDriver;
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
public class geeksforgeeks {
public static void main(String args[]) {
System.setProperty("webdriver.edge.driver",
"C:\\Users\\ADMIN\\Documents\\Selinium\\msedgedriver.exe");
// Instantiate a EdgeDriver class.
WebDriver driver = new EdgeDriver();
//Maximize the browser
driver.manage().window().maximize();
// Launch Website
driver.get("https://www.geeksforgeeks.org/");
JavascriptExecutor js = (JavascriptExecutor) driver;
//Scroll down till the bottom of the page
js.executeScript("window.scrollBy(0,document.body.scrollHeight)");
}
}
第 2 步:最大化窗口:driver.manage().window().maximize() 并打开 geeksforgeeks 站点。
Javascript
driver.manage().window().maximize();
// Launch Website
driver.get("https://www.geeksforgeeks.org/");
第三步:启动javascriptexecutor和scroll方法滚动到页面底部。
Javascript
JavascriptExecutor js = (JavascriptExecutor) driver;
//Scroll down till the bottom of the page
js.executeScript("window.scrollBy(0,document.body.scrollHeight)");
示例:使用Selenium向下滚动到网页底部的程序:
Java
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.edge.EdgeDriver;
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
public class geeksforgeeks {
public static void main(String args[]) {
System.setProperty("webdriver.edge.driver",
"C:\\Users\\ADMIN\\Documents\\Selinium\\msedgedriver.exe");
// Instantiate a EdgeDriver class.
WebDriver driver = new EdgeDriver();
//Maximize the browser
driver.manage().window().maximize();
// Launch Website
driver.get("https://www.geeksforgeeks.org/");
JavascriptExecutor js = (JavascriptExecutor) driver;
//Scroll down till the bottom of the page
js.executeScript("window.scrollBy(0,document.body.scrollHeight)");
}
}
输出:
上面的代码启动 Edge 浏览器并导航到 geeksforgeeks 页面,一旦网页加载, Selenium会自动从 Document Object Model 中获取网页的最大高度,然后 scrollBy() 方法向下滚动到底部。