Selenium+java - 调用JavaScript操作
2019-08-04 20:01
1911 查看
前言
在做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操作,有兴趣的同学可以尝试去拓展,本文仅是抛砖引玉,更多需结合实际情况处理。
相关文章推荐
- JAVA调用操作javascript (JS)工具类
- 在javascript中调用java
- 基于Ajax和JSON从javascript中调用后台java方法的JsonGateway
- Android加载网页JavaScript与Java之间的相互调用
- java如何与脚本(javaScript)之间相互调用二
- Excel2003和Excel2007对下拉选择和下拉级联选择的操作以及java程序的调用
- javascript与java值互相调用
- JavaScript调用java方法——使用Dwr框架的方法步骤
- 客户端执行 DDL下拉框调用页面JAVACRIP 涵数ddlQuery.Attributes.Add("onchange","changeSearchText();"); DataGrid 绑定项调用JAVASCRIPT,客户端
- java调用javascript实例
- Android中WebView实现Javascript调用Java类方法
- Android的Webview中,javascript如何调用java方法
- android-WebView详解实例(JavaScript调用Java方法,Java调用JavaScript方法)
- JAVASCRIPT调用JAVA
- 通过java调用存储过程(查询,更新,修改,删除),包的一些操作
- JAVA调用JAVASCRIPT的JAVA包
- java如何与脚本(javaScript)之间相互调用(转)
- 增强Activex控件,暴露method方法,在javascript中操作activex控件并调用web service方法
- Apache POI API操作Microsoft Office格式文件的方法+JAVA调用exe可执行文件
- WebInspect在cmd下操作教程(带java调用例子)