WebDriver中执行JavaScript

首先,我们使用如下方式初始化driver:

1     WebDriver driver = new FirefoxDriver();
2     JavascriptExecutor jse = (JavascriptExecutor)driver; 

1.直接传入JavaScript代码

可以直接给jse传入javascript代码:

1  jse.executeScript("window.document.getElementById(‘jingshou‘).click()";  

2.传入WebElement执行js:

1     WebElement element = driver.findElement(By.id("jingshou"));
2     jse.executeScript("arguments[0].click();", element);  

又或者:

1     jse.executeScript("arguments[0].onclick=function(){alert(‘This is my alert!‘);}", element)  

其中auguments[0]就代表element, 甚至我们可以传入更多的参数,比如

1     WebElement div = driver.findElemnt(By.id("myDiv"));
2     jse.executeScript("arguments[0].setAttribute(‘style‘, arguments[1])", div, "height: 1000px");  

通过执行以上代码,我们指定的DIV就新增(修改)了 style {height: 1000px}的属性

在WebDriver中可以使用JavaScript,通地使用JavascriptExector对象

首先要通过向下转型 JavascriptExecutor js = (JavascriptExecutor) driver; 转为JavascriptExector对象

然后再调用executeScript()方法来执行JS。

例:

1. 打开Google首页

2. 通过JS获取网页中的title  --- document.title

3. 获得网页中链接的数量 ----var links = document.getElementsByTagName(‘A‘); return links.length

具体实现如下

 1     package com.example.tests;
 2     import static org.junit.Assert.*;
 3     import org.junit.*;
 4     import org.openqa.selenium.*;
 5     import org.openqa.selenium.ie.InternetExplorerDriver;
 6
 7     public class test {
 8         @Test
 9         public void testJavaScriptCalls() {
10             WebDriver driver = new InternetExplorerDriver();
11             driver.get("http://www.google.com.hk");
12             JavascriptExecutor js = (JavascriptExecutor) driver;
13             String title = (String) js.executeScript("return document.title");
14             assertEquals("Google", title);
15             long links = (Long) js.executeScript("var links = "
16                     + "document.getElementsByTagName(‘A‘); "
17                     + "return links.length");
18             assertEquals(32, links);
19             driver.close();
20         }
21     }  

从javaScript代码中返回数据,我们需要使用return关键字。基于返回值的类型,我们需要对 executeScript()方法进行转型。对于带小数点的值,使用Double类型,非小数值可以使用Long类型,布尔值可以使用Boolean类 型,如果返回的是HTML节点,可以使用 WebElement类型,文本值,可以使用String类型。如果返回的是对象列表,基于对象类型的任何值都可以。

时间: 2024-08-25 04:00:33

WebDriver中执行JavaScript的相关文章

在delphi中执行javascript代码

http://lhdeyx.blog.163.com/blog/static/318196972011101132922916/ 在delphi中执行javascript代码 2011-11-11 15:32:54|  分类: delphi|举报|字号 订阅 下载LOFTER我的照片书  | 有时做项目难免用到代码交叉调用,delphi中执行js就是一种,两种方法可用:一.使用webbrower,比较麻烦二.使用ScriptControl,简单方便:1.首先uses ComObj;2.通用函数:

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

原文:UWP 在 WebView 中执行 JavaScript 代码(用于模拟用户输入等) - walterlv UWP 在 WebView 中执行 JavaScript 代码(用于模拟用户输入等) 2018-12-30 14:08 UWP 中使用 WebView 时可以在网页中额外执行一些代码.于是你几乎可以在网页上做任何事情,那些你可以在浏览器控制台中做的事情. 本文将介绍做法. 本文内容 准备环境 执行 JavaScript 代码 模拟用户输入 JavaScript eval(string

mongodb 中find中执行javascript $where

a. new Date() 和 Date()不是一回事,参考 http://stackoverflow.com/questions/3505693/difference-between-datedatestring-and-new-datedatestring 如果想获得epoch以来的毫秒数,必须用new Date(). 而Date(),似乎就只是一个函数,返回一个字符串而已.没什么大作用,反而容易混淆人的概念. b. Date对象提供了getTime() 2. 查询语句中,可以用$where

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

需要 rhino-1.7.7.jar 包 代码示例: package cn.java.mozilla.javascript; import org.mozilla.javascript.Context; import org.mozilla.javascript.Scriptable; public class Test { public static void main(String[] args) { test4JsNormalCode(); test4JsObj(); test4JsFun

【转载】如何在 C#中访问 JavaScript函数?

如何在 C#中访问 JavaScript函数? 时间:13-10-17 栏目:Unity3D教程 作者:zqcyou 评论:0 如何在 C#中访问 JavaScript函数?答案如下:c#代码中执行 javaScript函数: 方法一:1. 1 Page.RegisterStartupScript("ggg","<script>SetVisible(1);</script>"); 方法二:使用 Literal类,然后 1 2 3 4 5 6

.net中前台javascript与后台C#交互

.net中前台javascript与后台C#交互 如何在JavaScript访问后台C#方法.变量 方法一:使用Ajax开发框架,后台方法定义前添加[AjaxPro.AjaxMethod],然后就可以在前台js脚本中调用后台C#函数. 方法二:后台方法声明为public或者protected,然后前台使用js脚本进行调用. .cs public string Str() { return "javaScript函数中执行后台C#方法.."; } .aspx <script typ

Asp.net中前台javascript与后台C#交互

方法一:使用Ajax开发框架,后台方法定义前添加[AjaxPro.AjaxMethod],然后就可以在前台js脚本中调用后台C#函数. 方法二:后台方法声明为public或者protected,然后前台使用js脚本进行调用. 以下是代码片段: .cs public string Str() { return "javaScript函数中执行后台C#方法.."; } .aspx <script type="text/javascript"> var a =

转:selenium webdriver 执行javascript代码

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

执行AJAX返回HTML片段中的JavaScript脚本

如果AJAX加载的数据是一个HTML片段,而且这个HTML片段还包含脚 本<script>块,那么在你把这数据xmlHttp.responseText用innerHTML方法插入到当前文档一个元素中,你会 发现AJAX加载回来的脚本根本没有执行.这是AJAX开发中很常见的问题,如果你不是一直在用JavaScript框架做开发,相信你早就发现这个问题 了.本文分析了两个解决办法,其中一个是讲解jQuery框架的实现. 一. 问题描述 下面举个简单的例子,演示问题所在.在下面的例子中,假设变量re