📌  相关文章
📜  如何使用 JavaScriptExecutor 在selenium中向下滚动到页面底部

📅  最后修改于: 2022-05-13 01:56:17.189000             🧑  作者: Mango

如何使用 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。

  1. Eclipse IDE:在下载之前还要确保您的设备具有Java JDK。如果没有,安装Java参考这个:How to Download and Install Java for 64-bit machine?。并通过参考这篇文章 Eclipse IDE for Java Developers 安装 Eclipse IDE
  2. Selenium:在此处下载Selenium最新的稳定版本
  3. 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() 方法向下滚动到底部。