前言

在做web自动化时,有些情况selenium的api无法完成,需要通过第三方手段比如js来完成实现,比如去改变某些元素对象的属性或者进行一些特殊的操作,本文将来讲解怎样来调用JavaScript完成特殊操作。

用法

  1. 创建一个执行 JS 的对象,也就是 JavascriptExecutor 对象,这个对象是由 driver 进行强制类型转换而来,即JavascriptExecutor js= (JavascriptExecutor)driver;
  2. 然后这个对象 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操作,有兴趣的同学可以尝试去拓展,本文仅是抛砖引玉,更多需结合实际情况处理。

最新文章

  1. 诡异的localhost无法连接
  2. HttpClient_自定义cookie策略
  3. javascript中五种常见的DOM方法
  4. log4j:WARN Please initialize the log4j system properly.解决
  5. Hive 正则匹配函数 regexp_extract
  6. 【JNI】C向C++改造
  7. 使用 Linux 搭建 VPN
  8. 李洪强iOS开发拓展篇—UIDynamic(重力行为+碰撞检测)
  9. sublime text3输入中文的问题.
  10. 方便的Chrome取色插件ColorPick Eyedropper [设计, FE必备]
  11. C#解leetcode 64. Minimum Path Sum
  12. boadWorld Mark!
  13. abap 一些小知识点的总结
  14. windows 7蓝屏解决办法
  15. 依赖layui form模块 复选框tree插件(拓展可根据属性单选还是多选,数据反选)
  16. jquery中利用队列依次执行动画
  17. scrapy爬虫学习系列三:scrapy部署到scrapyhub上
  18. 如何自动生成图片用于测试 pytorch(No image? No need image)
  19. centos7如何安装zabbix
  20. 关于less在DW中高亮显示问题

热门文章

  1. 3D echarts 点位报表展示
  2. Nginx查看并发连接数
  3. 【朝花夕拾】Android自定义View篇之(九)多点触控(下)实践出真知
  4. java请求转发,响应重定向的区别
  5. Docker-Compose搭建单体SkyWalking
  6. Django前端HTML通过JS实现表格可编辑,动态添加行,回车完成新建文件夹
  7. 3. Django每日一码 之 Serializers 源码
  8. 赛前集训的第二个小总结(OI生涯盛极必衰orNOIP前最后试炼?)+关于学OI目的的思考
  9. Kafka【入门】就这一篇!
  10. 盘一盘 System.out.println()