JSCover+WebDriver/Selenium获取JS代码覆盖率

我们在看JSCover(http://tntim96.github.io/JSCover/manual/manual.xml)介绍及使用说明的时候,往往被图形界面所吸引。这种方式比较适合手工操作,点击和输入即可。

但是这种往往界面和真实界面相差比较大,因为真正的网页在JSCover内部的浏览加载框中。这使得原有的Selenium代码可能存在诸多问题。那么如何能够尽量少地改变原有的selenium代码而又获取到js的code coverage呢?这可以采用文件模式(File Mode)。

1. Instrument JS代码

java -jar JSCover-all.jar -fs SOURCE-DIRECTORY DESTINATION-DIRECTORY

source-directory为js代码的文件夹,包含需要instrument的js代码。destination-directory为instrument后输出的文件存放的文件夹。命令会创建destination-directory并且将source-directory的文件拷贝过来。对于js文件,会instrument。source-directory最后仍然会保留。最后JSCover还会生成jscoverage.html用来执行instrument的代码。

2. 启动Server

因为我们最后想看到report结果,我们需要将jscoverage.js中的变量jscoverage_isReport设为true。jscoverage.js会随着jscoverage.html一起产生。

jscoverage_isReport = true;

然后我们可以启动instrument的web server,再进行测试。

3. 编写Selenium/WebDriver代码

示例代码可参考:https://github.com/tntim96/JSCover-samples

我们只需要按照一般selnium/webdriver代码写就可以了。但是在最后有一步产生代码覆盖率需要加上如下代码:

WebDriver

String json = (String)((JavascriptExecutor) webClient).executeScript("return jscoverage_serializeCoverageToJSON();");

Selenium

String json = selenium.getEval("selenium.browserbot.getUserWindow().jscoverage_serializeCoverageToJSON();");

这里我们可以参考一个网友写的:http://www.350351.com/qianyanjishu/ceshijishu/69429.html

import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
public class SeleniumTester{

	@Test
	public void testJsCover() {
		WebDriver driver = new FirefoxDriver();
		driver.get("http://localhost/example-fs/index.html");
		driver.findElement(By.id("radio1")).click();
		String json = (String)((JavascriptExecutor) driver).executeScript("return jscoverage_serializeCoverageToJSON();");
		driver.quit();
	}
}

JSCover+WebDriver/Selenium获取JS代码覆盖率

时间: 2024-11-05 11:36:48

JSCover+WebDriver/Selenium获取JS代码覆盖率的相关文章

JSCover+WebDriver/Selenium获得JS 代码覆盖

我们看JSCover(http://tntim96.github.io/JSCover/manual/manual.xml)介绍及使用说明的时候,往往被图形界面所吸引.这样的方式比較适合手工操作,点击和输入就可以. 可是这样的往往界面和真实界面相差比較大,由于真正的网页在JSCover内部的浏览载入框中.这使得原有的Selenium代码可能存在诸多问题. 那么怎样可以尽量少地改变原有的selenium代码而又获取到js的code coverage呢?这可以採用文件模式(File Mode). 1

Selenium2学习-036-WebUI自动化实战实例-034-JavaScript 在 Selenium 自动化中的应用实例之六(获取 JS 执行结果返回值)

Selenium 获取 JavaScript 返回值非常简单,只需要在 js 脚本中将需要返回的数据 return 就可以,然后通过方法返回 js 的执行结果,方法源码如下所示: 1 /** 2 * Get Object of return from js 3 * 4 * @author Aaron.ffp 5 * @version V1.0.0: autoSeleniumDemo main.aaron.sele.core SeleniumCore.java execJSR, 2015-8-9

Python selenium的js扩展实现

python写的数据采集,对一般有规律的页面用 urllib2 + BeautifulSoup + 正则就可以搞定. 但是有些页面的内容是通过js生成,或者通过js跳转的,甚至js中还加入几道混淆机制:对这种涉及页面脚本解析的内容,前面的方式便很无力. 这时我们需要能解析.运行js的引擎——浏览器,而python selenium能提供程序与浏览器的交互接口,再加上phantomjs这个可以后台运行的浏览器,即使用 selenium + phantomjs 便可以解决以上的问题. seleniu

selenium获取多窗口句柄并一一切换至原窗口句柄(三个窗口)

网上有很多是selenium基于python来获取两个窗口句柄与切换,本文实现用python+selenium获取多窗口句柄并一一切换至原窗口句柄(三个窗口),且在每个窗口下进行一个搜索或翻译,然后截图. 代码如下: 1 # coding=utf-8 2 from selenium import webdriver 3 import time 4 5 driver = webdriver.Chrome() 6 driver.maximize_window() # 窗口最大化 7 8 driver

selenium 获取table数据

public class Table { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub WebDriver driver = ExplorerBase.IESetting(); String url = "http://zs.njust.edu.cn/newzs/news/zhxw/20140710151805.htm"; driver.m

selenium获取元素后用click()点击没有作用,用Keys.ENTER就可以成功

selenium获取元素后用click()点击没有作用,用键盘输入enter(Keys.ENTER)就可以成功 #coding = utf-8 from selenium import webdriver from selenium.webdriver.common.keys import Keys driver = webdriver.Firefox() driver.get("http://www.baidu.com") driver.find_element_by_xpath(&

python使用selenium执行JS快速完成超长字符串的输入

使用selenium的 .send_keys 方法能够满足大多数情况的输入操作,但是在输入内容很多的情况下,使用该方法会消耗很多时间. 此时可以使用selenium执行js的  .innerHTMLf方法快速输入这些内容. 但是使用js的方法有一定缺陷性,它对常见  input标签类型的输入框无效,只对大多数富文本框生效. 非常简单的html界面 <!DOCTYPE html> <html> <head> <meta charset="utf-8&quo

以后台权限菜单控制为例,获取js路径后面参数值

<script type="text/javascript" src="../Public/js/common.js?menuids=1,2,3,4,5&ckids=4-5-6" /></script> 需要注意的是,此段js文件位置需要放在页面中所有js包含文件后面,目前暂未想到好的办法解决位置问题. //获取js后面参数 function getUrlArg(){ var url = $("script:last&quo

php获取js里的参数

php获取js的值有如下方式: 1.php echo出js文件得到返回值,在gamemap.js文件中输出参数. echo '<script type="text/javascript" src="gamemap.js"></script>'; 2.在页面中直接调用js方法,getAddress()方法执行后可以获得参数. echo "<script type='text/javascript'>getAddress($