zoukankan      html  css  js  c++  java
  • 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();
    	}
    }


    版权声明:本文博客原创文章,博客,未经同意,不得转载。

  • 相关阅读:
    学习笔记CSS
    悲剧,当用cywin 写Linux脚本
    .net中控件的命名规则和一些词语的简称(转)(I)
    PyMining开源中文文本数据挖掘平台 Ver 0.2发布
    TCP和UDP的区别(转)
    发一道我今天遇到C面试题(求完美解)
    C#三种定时器的实现转载
    window 拷贝 linux 远程
    datepicker 日月年
    Oracle PL/SQL练习题总目录 hl3292
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/4715340.html
Copyright © 2011-2022 走看看