【发布时间】:2012-03-18 17:34:55
【问题描述】:
Selenium:是否有任何可以与 Selenium Server/RC 集成的 JS (JavaScript) 代码覆盖工具
嗨,
我想通过我的 Selenium 测试套件完成 JS 代码覆盖
是否有任何代码覆盖工具可以与我现有的 selenium rc 框架集成??
【问题讨论】:
标签: selenium selenium-rc code-coverage
Selenium:是否有任何可以与 Selenium Server/RC 集成的 JS (JavaScript) 代码覆盖工具
嗨,
我想通过我的 Selenium 测试套件完成 JS 代码覆盖
是否有任何代码覆盖工具可以与我现有的 selenium rc 框架集成??
【问题讨论】:
标签: selenium selenium-rc code-coverage
我不知道你想要达到什么目的,但是:
所以无论是 PHP、HTML、JSP、ASP 还是 .NET——Selenium 旨在模仿最终用户并单击最终应用程序——最终的 HTML 代码由引擎盖下的任何东西生成。
/p>
Selenium 对代码覆盖率测试也不是那么好 - 一段代码可以在许多页面上 - 所以使用 selenium 的更好方法是进行“用户”覆盖 - 尝试覆盖活人可能做的所有可能的行为与您的页面
【讨论】:
不知道 Selenium 的工具,但JsTestDriver 的设计与 Selenium RC 非常相似(可以从命令行启动测试,并且它们在无头驱动浏览器的服务器上运行)并提供代码覆盖率信息。
IntelliJ 与 JsTestDriver 集成并提供visual display of coverage information。
【讨论】:
理论上,您可以使用任何检测 JavaScript 代码的覆盖率工具来收集覆盖率数据。
例如,您可以在代理模式(用于实时检测)或静态检测中使用 JSCoverage 来从检测代码运行 Selenium 测试。
一个技术障碍可能是设计一种方法来跨多个页面累积覆盖率数据。您选择的覆盖工具可能已经支持从多个页面运行中累积数据。如果没有,您可能必须自己处理那部分,但这可能不是一件小事。
【讨论】:
没有特定的工具可以与 Selenium 集成来进行 JS 覆盖。但是有很多工具可以在每个页面上测试 JS,这些工具可以判断在您的网页上执行的 JS 是否有任何错误。这可能不是理想的解决方案,但在每个页面上,您都可以测量到 JS 在您的被测网页上正确执行的点。有两种解决方案:
1.) JSErrorCollector API: 它将直接与 Selenium 集成,并让您知道页面是否有任何错误。可以在以下位置找到:http://mguillem.wordpress.com/2011/10/11/webdriver-capture-js-errors-while-running-tests/
2.) 成熟的 JS 覆盖工具:这里有一个很好的工具列表,它们基本上可以帮助您在网页上覆盖 JS。可以在:JavaScript unit test tools for TDD
【讨论】:
看看https://github.com/yui/yuitest/wiki/Code-Coverage
我之前已将此工具集成到我的 Selenium 测试中。在页面更改之前,您需要做一些工作来收集覆盖率信息(在任何情况下,js 都会触发页面重新加载、链接等...)
设置完所有内容后,它将完全覆盖在 Selenium 加载和测试您的网站页面时执行的所有 js。
PS : 即使它是专门为 YUI 测试而改编的,你也可以将它与 selenium 一起使用。
【讨论】:
我找到了满足我需求的解决方案,有多种工具可用,但我想要一个可以轻松与我现有的自动化集成的工具
工具是 JSCover http://tntim96.github.io/JSCover/
只需运行服务器
运行代理服务器 java -jar target/dist/JSCover-all.jar -ws --proxy --port=3128 --report-dir=target
在您的 Webdriver 中为指定的端口添加代理,在我的情况下为 3128
执行测试后生成报告使用
((JavascriptExecutor) driver).executeScript("jscoverage_report();");
您可以在退出 WebDriver 或测试用例的位置添加此行
【讨论】: