📜  Selenium中的 JavaScriptExecutor

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

Selenium中的 JavaScriptExecutor

Selenium是一种流行的基于 Web 的开源自动化工具。有时, Selenium webdriver 在与一些 web 元素交互时会遇到问题,例如,用户打开一个网站,出现意外的弹出窗口,这会阻止 webdriver 执行操作并产生不准确的结果。这是 JavascriptExecutor 开始使用的地方。

Selenium中的 JavaScriptExecutor 是什么?

JavaScriptExecutor 是一个接口,用于通过selenium webdriver 执行 JavaScriprt。 JavaScript 是一种在浏览器中与 HTML 交互的编程语言,要在Selenium中使用此函数,需要 JavascriptExecutor。

JavascriptExecutor 提供了两种方法:

  1. 执行脚本
  2. 执行异步脚本

1. 执行脚本

此方法在当前选定的窗口或框架中执行 javaScript。该脚本作为匿名函数运行,并且该脚本可以返回值。返回的数据类型有:

  • 网元
  • 列表
  • 细绳
  • 布尔值

2. 执行异步脚本

此方法用于在当前窗口或框架中执行异步 Javascript。执行的异步 Javascript 是单个线程,而页面的其余部分连续解析。这提高了性能。

开始使用 JavaScriptExecutor

1.导入包

2.创建参考

3.调用JavascriptExecutor方法

Javascript
// importing the package
Import org.openqa.selenium.JavascriptExecutor;
 
// creating a reference
JavascriptExecutor js = (JavascriptExecutor) driver;
 
// calling the method
js.executeScript(script, args);


Java
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.edge.EdgeDriver;
public class geeksforgeeks {
    public static void main(String args[])
    {
        System.setProperty(
            "webdriver.edge.driver",
            "C:\\Users\\ADMIN\\Documents\\Selenium\\msedgedriver.exe");
       
        // Instantiate a Driver class.
        WebDriver driver = new EdgeDriver();
       
        // Maximize the browser
        driver.manage().window().maximize();
       
        // Launch Website
        driver.get("https://www.geeksforgeeks.org/");
       
        WebElement java = driver.findElement(
            By.xpath("//*[@id=\"hslider\"]/li[6]/a"));
       
        // Create a reference
        JavascriptExecutor js = (JavascriptExecutor)driver;
       
        // Call the JavascriptExecutor methods
        js.executeScript("arguments[0].click();", java);
    }
}


Selenium中的 JavascriptExecutor 示例

示例 1. Selenium中的 JavascriptExecutor 刷新浏览器窗口

示例 2. Selenium中的 JavascriptExecutor 发送文本

示例 3. 生成警报弹出窗口

示例 4. 获取网页的 InnerText

示例 5. 获取网页的标题

示例 6. 滚动页面

使用 JavaScripExecutor 单击元素

在示例中,我们使用selenium webdriver 和 javascriptexecutor 打开 geeksforgeeks 网站并单击一个元素。

Java

import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.edge.EdgeDriver;
public class geeksforgeeks {
    public static void main(String args[])
    {
        System.setProperty(
            "webdriver.edge.driver",
            "C:\\Users\\ADMIN\\Documents\\Selenium\\msedgedriver.exe");
       
        // Instantiate a Driver class.
        WebDriver driver = new EdgeDriver();
       
        // Maximize the browser
        driver.manage().window().maximize();
       
        // Launch Website
        driver.get("https://www.geeksforgeeks.org/");
       
        WebElement java = driver.findElement(
            By.xpath("//*[@id=\"hslider\"]/li[6]/a"));
       
        // Create a reference
        JavascriptExecutor js = (JavascriptExecutor)driver;
       
        // Call the JavascriptExecutor methods
        js.executeScript("arguments[0].click();", java);
    }
}

代码说明:上述脚本用于打开 Edge 浏览器并导航到 geeksforgeeks 网站并使用 JavaScriptExecutor 单击元素。那么让我们看看它是如何工作的:

  1. 将系统属性“webdriver.edge.driver”设置为 youredgedrivrer.exe 文件的路径,并实例化 Edge 驱动程序类: System.setProperty(“webdriver.edge.driver”,"edgedriver location");
  2. 最大化窗口: driver.manage().window().maximize();
  3. 打开 URL: driver.get(“URL 链接”)
  4. 使用 finddby xpath 方法“driver.findElement(By.xpath(“xpath address”));获取Java的元素
  5. 为 JavaScriptExecutor 创建引用“JavascriptExecutor js = (JavascriptExecutor) driver;”
  6. 调用 JavascriptExecutor 方法并传递用于单击“js.executeScript(“arguments[0].click();”,webelement);”的webelement

输出: