在已使用Selenium作为自动化测试后需要加入JSCover以检测Javascript的使用情况,通过运行Selenium程序得到JSCover生成的报表。
因为是依靠Selenium为主线程程序而无需用到JSCover提供的Web UI,所以用到的是JSCover的File System模式。首先将需要检测的Javascript代码进行注解。
命令如:java -jar JSCover-all.jar -fs [OPTIONS] SOURCE-DIRECTORY DESTINATION-DIRECTORY
运行此命令后会生成已注解后的Javascript文件和JSCover提供的Web UI文件,结构如:
-jscover.log
-jscoverage.css
-jscoverage.html
-jscoverage.js
-jscoverage-highlight.css
-jscoverage-ie.css
-jscoverage-throbber.gif
上面标黑的jscoverage.js是我们需要用到的文件,打开此文件将变量jscoverage_isReport设置为true(默认为false)。接下来就可以编写selenium代码了,一个简单的示例如下:
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.findElement(By.id( "radio1" )).click();
String json = (String)((JavascriptExecutor) driver).executeScript( "return jscoverage_serializeCoverageToJSON();" );
driver.quit();
}
} |
String json = (String)((JavascriptExecutor) driver).executeScript("return jscoverage_serializeCoverageToJSON();"); 此行代码取到的json字符串需要保存到名为jscoverage.json文件中,位置与jscoverage.js保持在同一目录,当然你也可以通过修改jscoverage.js读取jscoverage.json的目录进行修改,缺省情况下是在同级目录。
运行完上面的unit test,打开jscoverage.html就可以看到所生成的报表了。