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

本文介绍了如何结合JSCover和WebDriver/Selenium进行JavaScript代码覆盖率的测试。在不大幅度修改原有Selenium代码的基础上,通过JSCover的文件模式,对JS代码进行instrument,启动server,并设置jscoverage_isReport为true。接着,利用Selenium/WebDriver编写测试代码,最终在执行完成后获取代码覆盖率报告。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们在看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();
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值