在用selenium编写web页面的自动化测试代码时,可能需要执行一些JavaScript代码,selenium本身就支持执行js,我们在代码中可以使用executeScript、executeAsyncScript这两个方法来执行JS。 
executeScript是同步方法,用它执行js代码会阻塞主线程执行,直到JS代码执行完毕; 
executeAsyncScript方法是异步方法,它不会阻塞主线程执行。

JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript(String script, object... args); executeScript方法如果有返回值,有以下几种情况:
1、如果返回一个页面元素(document element), 这个方法就会返回一个WebElement
2、如果返回浮点数字,这个方法就返回一个double类型的数字
3、返回非浮点数字,方法返回Long类型数字
4、返回boolean类型,方法返回Boolean类型
5、如果返回一个数组,方法会返回一个List<Object>
6、其他情况,返回一个字符串
7、如果没有返回值,此方法就会返回null

JavascriptExecutor js = (JavascriptExecutor) driver;


// 用js弹出alert js.executeScript("alert('Test Case Execution Is started Now..');");
driver.switchTo().alert().accept();
// 用js判断页面加载完毕,返回complete System.out.println("readyState: " + js.executeScript("return document.readyState").toString());
// 用js得到页面的title String title = (String) js.executeScript("return document.title");
System.out.println("current page title get by js: " + title);
// 用js得到页面的domain name System.out.println("current page domain name get by js: " + js.executeScript("return document.domain"));
// 用js操作页面元素,如高亮显示某个元素 WebElement element = driver.findElement(By.id("kw"));
js.executeScript("arguments[0].setAttribute('style', arguments[1]);", element, "color: orange; border: 4px solid orange;"); /** * 每隔一秒check一下页面加载是否完成,check次数是25 */
public void checkPageIsReady()
{ JavascriptExecutor js = (JavascriptExecutor) driver; for (int i = 0; i < 25; i++) {
if ("complete".equals(js
.executeScript("return document.readyState").toString())) {
break;
} try {
Thread.sleep(1000); }
catch (InterruptedException e) {
e.printStackTrace();
}
}
}

Selenium2(WebDriver)中执行JavaScript代码 (转)的更多相关文章

  1. python中执行javascript代码

    python中执行javascript代码: 1.安装相应的库,我使用的是PyV8 2.import PyV8 ctxt = PyV8.JSContext()     ctxt.enter()     ...

  2. JAVA中执行JavaScript代码并获取返回值

    JAVA中执行JavaScript代码并获取返回值 场景描述 实现思路 技术要点 代码实现 测试方法 运行结果 改进空间 场景描述 今天在CSDN上偶然看到一个帖子对于一段字符串 “var p=‘xx ...

  3. UWP 在 WebView 中执行 JavaScript 代码(用于模拟用户输入等) - walterlv

    原文:UWP 在 WebView 中执行 JavaScript 代码(用于模拟用户输入等) - walterlv UWP 在 WebView 中执行 JavaScript 代码(用于模拟用户输入等) ...

  4. UWP 在 WebView 中执行 JavaScript 代码(用于模拟用户输入等)

    UWP 中使用 WebView 时可以在网页中额外执行一些代码.于是你几乎可以在网页上做任何事情,那些你可以在浏览器控制台中做的事情. 本文将介绍做法. 本文内容 准备环境 执行 JavaScript ...

  5. 尚学堂 215 在java中执行JavaScript代码

    package com.bjsxt.test; import java.io.FileReader; import java.net.URL; import java.util.List; impor ...

  6. 在delphi中执行javascript代码

    有时做项目难免用到代码交叉调用,delphi中执行js就是一种,两种方法可用: 一.使用webbrower,比较麻烦 二.使用ScriptControl,简单方便: 1.首先 uses ComObj; ...

  7. java util - 在java代码中执行javascript代码工具 rhino-1.7.7.jar

    需要 rhino-1.7.7.jar 包 代码示例: package cn.java.mozilla.javascript; import org.mozilla.javascript.Context ...

  8. C#执行javascript代码

    最近在做网站自动登陆小工具,遇到技术屏障.密码在submit时会使用js进行加密.这时我需要模拟这个加密过程,想到使用C#执行javascript代码. 对于执行javascript代码,纯代码方式使 ...

  9. 在WebBrowser中执行javascript脚本的几种方法整理(execScript/InvokeScript/NavigateScript) 附完整源码

    [实例简介] 涵盖了几种常用的 webBrowser执行javascript的方法,详见示例截图以及代码 [实例截图] [核心代码] execScript方式: 1 2 3 4 5 6 7 8 9 1 ...

随机推荐

  1. 使用bat一键打开java、jar、py文件

    直接运行jar是没有命令行窗口的,如果想有命令行窗口,一般来说是要 win+r 运行cmd,定位到所在目录,然后用命令行执行 java -jar xxx.jar 而对于python,打开py文件也是麻 ...

  2. scala的object知识点

    1:object的中的代码,会在object对象被调用的时候执行且只会执行一次 object Demo{ println("gaoxing") def name = "n ...

  3. 《Head First Servlets & JSP》-4-请求和响应

    Servlet生命周期 生命周期三大重要时刻 Servlet集成结构: 方法 init() service() doGet()/goPost() 何时调用 Servlet实例被创建之后.为客户请求提供 ...

  4. idea中解决Error:java: Compilation failed: internal java compiler error的问题

    项目中,使用gradle做项目构建,当我们想更改JDK的版本时,报以下错误: Information:Using javac 1.8.0_111 to compile java sourcesInfo ...

  5. java代理模式实例讲解

    下面这个是设计模式课上的例子: import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import ...

  6. 如何设置Oracle process值

    参考链接:http://blog.51cto.com/sunwayle/88870 su - oracle sqlplus system as sysdba; show parameter proce ...

  7. mongodb对数组中的元素进行查询详解

    原文链接:http://blog.csdn.net/renfufei/article/details/78320176 MongoDB中根据数组子元素进行匹配,有两种方式. 使用 “[数组名].[子元 ...

  8. console的使用

    一.显示信息的命令 console.log("normal"); // 用于输出普通信息 console.info("information"); // 用于输 ...

  9. 算法训练 最大的算式(DP)

    问题描述 题目很简单,给出N个数字,不改变它们的相对位置,在中间加入K个乘号和N-K-1个加号,(括号随便加)使最终结果尽量大.因为乘号和加号一共就是N-1个了,所以恰好每两个相邻数字之间都有一个符号 ...

  10. JS生成gif动态图下载

    需求:通过动态变化的图生成一个gif图提供下载. 实现方案:1.可通过服务端生成对应gif,然后前端请求下载2.前端自己实现生成gif图片,自行下载 采用方案:前端实现方式,于是在网上找各种相关的几款 ...