Selenium+java - 调用JavaScript操作
2024-09-01 03:35:01
前言
在做web自动化时,有些情况selenium的api无法完成,需要通过第三方手段比如js来完成实现,比如去改变某些元素对象的属性或者进行一些特殊的操作,本文将来讲解怎样来调用JavaScript完成特殊操作。
用法
- 创建一个执行 JS 的对象,也就是 JavascriptExecutor 对象,这个对象是由 driver 进行强制类型转换而来,即JavascriptExecutor js= (JavascriptExecutor)driver;
- 然后这个对象 js 就可以调用 executeScript 方法来执行一段 JS,这段 JS 的语句是以一段字符串的形式给传参到 executeScript 中去的
实际案例
那么下面我们一起来练习一下:
场景1
打开百度首页,并弹窗提示hellow,world!,关闭弹窗,控制台输出弹窗文本hellow,world!
具体代码如下:
import org.openqa.selenium.Alert;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test; /**
* selenium调用JavaScript案例
*
* @author rongrong
*/
public class TestJavaScript { WebDriver driver; @BeforeClass
public void beforeClass() {
System.setProperty("webdriver.chrome.driver", "driver/chromedriver.exe");
driver = new ChromeDriver();
driver.get("https://www.baidu.com/");
} /**
* 场景1:打开百度首页,并弹窗提示hellow,world!,关闭弹窗,控制台输出弹窗文本hellow,world!
*/
@Test
public void testJavaScript() {
JavascriptExecutor j = (JavascriptExecutor) driver;
j.executeScript("alert('hellow,world!')");
Alert alert = driver.switchTo().alert();
String text = alert.getText();
System.out.println(text);
alert.accept();
} @AfterClass
public void afterClass() {
driver.quit();
} }
场景2
打开百度首页,将百度按钮改为MyLove
具体代码如下:
@Test
public void testChangeColor() {
WebElement element = driver.findElement(By.id("su"));
JavascriptExecutor j = (JavascriptExecutor) driver;
j.executeScript("document.getElementById('su').setAttribute('value', 'MyLove');",element);
}
运行效果
关于更多调用JavaScript操作,有兴趣的同学可以尝试去拓展,本文仅是抛砖引玉,更多需结合实际情况处理。
最新文章
- 诡异的localhost无法连接
- HttpClient_自定义cookie策略
- javascript中五种常见的DOM方法
- log4j:WARN Please initialize the log4j system properly.解决
- Hive 正则匹配函数 regexp_extract
- 【JNI】C向C++改造
- 使用 Linux 搭建 VPN
- 李洪强iOS开发拓展篇—UIDynamic(重力行为+碰撞检测)
- sublime text3输入中文的问题.
- 方便的Chrome取色插件ColorPick Eyedropper [设计, FE必备]
- C#解leetcode 64. Minimum Path Sum
- boadWorld Mark!
- abap 一些小知识点的总结
- windows 7蓝屏解决办法
- 依赖layui form模块 复选框tree插件(拓展可根据属性单选还是多选,数据反选)
- jquery中利用队列依次执行动画
- scrapy爬虫学习系列三:scrapy部署到scrapyhub上
- 如何自动生成图片用于测试 pytorch(No image? No need image)
- centos7如何安装zabbix
- 关于less在DW中高亮显示问题
热门文章
- 3D echarts 点位报表展示
- Nginx查看并发连接数
- 【朝花夕拾】Android自定义View篇之(九)多点触控(下)实践出真知
- java请求转发,响应重定向的区别
- Docker-Compose搭建单体SkyWalking
- Django前端HTML通过JS实现表格可编辑,动态添加行,回车完成新建文件夹
- 3. Django每日一码 之 Serializers 源码
- 赛前集训的第二个小总结(OI生涯盛极必衰orNOIP前最后试炼?)+关于学OI目的的思考
- Kafka【入门】就这一篇!
- 盘一盘 System.out.println()