《手把手教你》系列技巧篇(四十)-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.小结

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

相关推荐
Coder_Boy_8 小时前
技术让开发更轻松的底层矛盾
java·大数据·数据库·人工智能·深度学习
invicinble8 小时前
对tomcat的提供的功能与底层拓扑结构与实现机制的理解
java·tomcat
较真的菜鸟8 小时前
使用ASM和agent监控属性变化
java
黎雁·泠崖8 小时前
【魔法森林冒险】5/14 Allen类(三):任务进度与状态管理
java·开发语言
qq_12498707539 小时前
基于SSM的动物保护系统的设计与实现(源码+论文+部署+安装)
java·数据库·spring boot·毕业设计·ssm·计算机毕业设计
Coder_Boy_10 小时前
基于SpringAI的在线考试系统-考试系统开发流程案例
java·数据库·人工智能·spring boot·后端
Mr_sun.10 小时前
Day06——权限认证-项目集成
java
瑶山10 小时前
Spring Cloud微服务搭建四、集成RocketMQ消息队列
java·spring cloud·微服务·rocketmq·dashboard
abluckyboy10 小时前
Java 实现求 n 的 n^n 次方的最后一位数字
java·python·算法
2301_8187320610 小时前
前端调用控制层接口,进不去,报错415,类型不匹配
java·spring boot·spring·tomcat·intellij-idea