Selenium JavascriptExecutor是什么

Selenium JavascriptExecutor是什么

Selenium是一个广为人知的开源、基于Web的自动化工具,被许多人使用。但有时它在与某些元素交互时会遇到问题;也许意外弹出的窗口会阻止Web驱动程序执行操作并生成错误的结果。这就是JavascriptExecutor在这种情况下扮演关键角色的地方,使Web驱动程序能够成功执行所需的操作。它的复杂性和突发性并存,使得处理这种情况更加容易。

在Selenium中JavascriptExecutor是什么

使用名为JavascriptExecutor的接口,可以通过Selenium执行JavaScript,并在使用这种编程语言时与浏览器中的HTML进行交互。使用JavascriptExecutor对象是必不可少的,关键是创建长度和复杂度不同的句子结构,这对于构成一个有趣的文本至关重要。因此,JavaScript Executor提供了一种与浏览器内的HTML进行通信的方法,同时还便于程序员使用自己独特的JavaScript写作风格构建聪明灵活的表达式。

方法

以下是JavascriptExecutor在Selenium中提供的方法:

ExecuteScript(执行脚本)

在当前选择的窗口或框架中执行JavaScript从未如此简单!通过调用一个匿名函数,此方法使用户能够获得多种数据类型的收益,包括:

  • Web元素

  • 列表

  • 字符串

  • 长整型

  • 布尔类型

  • ExecuteAsyncScript(异步执行脚本)

异步JavaScript执行是一种多线程的方法,用于在当前窗口或框架中执行单个JavaScript任务。它允许页面解析继续进行,优化性能并提供极大的灵活性。将代码分解为易于识别的组件,具有不同的复杂性和上下文,是实现此目标的关键。该方法涉及在某些区域创建简明的部分,同时在其他部分容纳更长和复杂的部分。使用此方法,异步JavaScript以高效和优化的方式运行。

了解如何使用JavascriptExecutor

  • 第1步 - 导入包
import org.openqa.selenium.JavascriptExecutor;
  • 步骤2 - 创建引用
javascriptExecutor js = (JavascriptExecutor) driver;
  • 步骤3 − 调用JavascriptExecutor方法
js.executeScript(script, args);

实现

示例

// importing the package
Import org.openqa.selenium.JavascriptExecutor;

// creating a reference
JavascriptExecutor js = (JavascriptExecutor) driver;

// calling the method
js.executeScript(script, args);

Selenium中JavascriptExecutor的示例

示例1

刷新浏览器窗口。

JavascriptExecutor js = (JavascriptExecutor) driver;

js.executeScript("location.reload()");

示例2

发送这段文本。

JavascriptExecutor js = (JavascriptExecutor) driver;

js.executeScript("document.getElementByID(‘element id ’).value = ‘xyz’;");

示例3

生成弹出警告窗口。

JavascriptExecutor js = (JavascriptExecutor)driver;

Js.executeScript("alert(‘hello world’);");

示例4

获取网页的内部文本。

avascriptExecutor js = (JavascriptExecutor)driver;

string sText =  js.executeScript("return document.documentElement.innerText;").toString();

示例5

获取网页标题。

avascriptExecutor js = (JavascriptExecutor)driver;

string sText =  js.executeScript("return document.title;").toString();

示例6

滚动页面。

JavascriptExecutor js = (JavascriptExecutor)driver;

 //Vertical scroll – down by 150 pixels

 js.executeScript("window.scrollBy(0,150)");

使用javascriptExecutor选择一个元素

在这个示例中,我们使用selenium web driver和javascriptExecutor打开WaytoClass网站并点击一个元素。

说明

下面提到的脚本将启动Edge浏览器,打开WaytoClass网站,并使用javascriptExecutor点击特定元素。让我们来看看它的功能。

  • 创建一个Edge驱动程序类,并在系统属性“webdriver.edge.driver”中提供youredgedriver.exe的路径。

  • 使用driver.manage().window().maximize()最大化窗口

  • 使用driver.get(“URL链接”)打开网址

  • 使用finddby xpath方法获取Java元素”driver.findElement(By.xpath(“xpath地址”));”

  • 通过使用javascriptExecutor js=(JavascriptExecutor)driver;为javascriptExecutor创建一个引用

  • 调用javascriptExecutor方法并传递要点击的网页元素”js.executeScript(“arguments[0].click();”,webelement);”

示例

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 waytoclass {
   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.waytoclass.com/");

      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);
   }
}

输出

Starting MSEdgeDriver 98.0.1108.56 (9a336a18ae89157b3c7ea0568a9cbced8ebc3f7) on port 55401
Only local connections are allowed.
Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping MSEdgeDriver safe. MSEdgeDriver was started successfully.

注意 − 在显示上述输出之后,它将自动打开网站并点击元素。

Selenium JavascriptExecutor是什么

结论

通过使用JavascriptExecutor,可以实现在Web上增强自动化能力,使开发人员可以与页面元素进行交互,超出使用Selenium通常可以实现的范围。此外,通过将更高程度的灵活性和可定制性添加到等式中,可以在速度和效率方面大大改善Web自动化。尽管对于不熟悉JavaScript细微差别的经验不足的编码人员而言,这种语言很复杂,但掌握它可以使追求提升其网络形象的组织受益。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程

TestNG 精选笔记