《手把手教你》系列技巧篇(四十)-java+ selenium自动化测试-JavaScript的调用执行-下篇(详解教程)

1.简介

在实际工作中,我们需要对处理的元素进行高亮显示,或者有时候为了看清楚做跟踪鼠标点击了哪些元素需要标记出来。今天宏哥就在这里把这种测试场景讲解和分享一下。

2.用法

创建一个执行 JS 的对象,也就是 JavascriptExecutor 对象,这个对象是由 driver 进行强制类型转换而来,即JavascriptExecutor js= (JavascriptExecutor)driver;然后这个对象 js 就可以调用 executeScript 方法来执行一段 JS,这段 JS 的语句是以一段字符串的形式给传参到 executeScript 中去的。

ini 复制代码
//执行方式
JavascriptExecutor jsExecutor = (JavascriptExecutor) driver;
jsExecutor.executeScript("js代码");

3.场景三

利用JS处理元素高亮显示。其实这个前边在代码中也有实现过,只不过没有提到可能没有注意或者看到过,宏哥在这里就讲解一下。

4.实际案例(场景三)

4.1代码设计

4.2参考代码

ini 复制代码
/**
 * 
 */
package lessons;

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;

/**
 * @author 北京-宏哥
 * 
 * 《手把手教你》系列技巧篇(四十)-java+ selenium自动化测试-JavaScript的调用执行-下篇(详解教程)
 *
 * 2025年1月20日
 */
public class AddColor {
    
public static void main(String[] args) throws Exception {  
        
        System.setProperty("webdriver.chrome.driver", ".\Tools\chromedriver.exe");  
           
        WebDriver driver = new ChromeDriver();  
     
        driver.manage().window().maximize();  
       
        driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
          
        driver.get("https://www.baidu.com/");  
       
        Thread.sleep(2000);
        
        // 点击登录
        driver.findElement(By.xpath("//*[@id='u1']/a")).click();
        Thread.sleep(500);
        
        WebElement username = driver.findElement(By.id("TANGRAM__PSP_11__userName"));
        
        // 创建一个JavascriptExecutor对象
        JavascriptExecutor js= (JavascriptExecutor)driver;
        
        username.sendKeys("abcdefg");
        
        // 设置颜色
        js.executeScript("arguments[0].setAttribute('style', 'background: yellow; border: 2px solid red;');",username);
        
        WebElement password = driver.findElement(By.id("TANGRAM__PSP_11__password"));
        js.executeScript("arguments[0].setAttribute('style', 'background: yellow; border: 2px solid red;');",password);
        
        WebElement submit = driver.findElement(By.id("TANGRAM__PSP_11__submit"));
        js.executeScript("arguments[0].setAttribute('style', 'background: yellow; border: 2px solid red;');",submit);
        
       
    }  

}

4.3运行代码

1.运行代码,右键Run AS->Java Appliance,控制台输出,如下图所示:

2.运行代码后电脑端的浏览器的动作,如下小视频所示:

5.小结

这种办法可以帮你清楚的看到那些功能执行了,那些没有执行,不方便的前期需要编写代码添加颜色。对鼠标都点击走过的路线进行一个追踪。好了,时间不早了,今天就分享和讲解到这里,感谢大家耐心的阅读,喜欢宏哥的,别忘记在文章末尾支持一下。

相关推荐
yaoxin5211231 分钟前
273. Java Stream API - Stream 中的中间操作:Mapping 操作详解
java·开发语言·python
一念一花一世界5 分钟前
Arbess从基础到实践(25) - 集成GitLab+阿里云OSS实现Java项目自动化构建并将制品上传Aliyun OSS
java·阿里云·gitlab·cicd·arbess
liyi_hz20086 分钟前
企业信创落地深水区:O2OA(翱途)平台的国产化适配实践与技术思考
java·开源软件
她说..9 分钟前
手机验证码功能实现(附带源码)
java·开发语言·spring boot·spring·java-ee·springboot
Adellle12 分钟前
Java-Stream流
java
xUxIAOrUIII21 分钟前
JWT和拦截器使用【附Maven中操作步骤】
java·maven
带刺的坐椅22 分钟前
Liquor(Java 脚本)替代 Groovy 作脚本引擎的可行性分析
java·groovy·liquor
weibkreuz23 分钟前
初始React@1
前端·react.js·前端框架
武子康27 分钟前
Java-203 RabbitMQ 生产者/消费者工作流程拆解:Connection/Channel、默认交换器、ACK
java·分布式·消息队列·rabbitmq·erlang·ruby·java-rabbitmq
Coder_Boy_34 分钟前
前端和后端软件系统联调经典问题汇总
java·前端·驱动开发·微服务·状态模式