您没有说您不喜欢 Selenium 的哪些方面,但我猜您对 JavaScript 很有信心,所以我的建议是使用CasperJS作为主要工具。它确实适用于单页网络应用程序,并带有自己的测试工具。wait
使用嵌套子句时,代码有时仍会有些复杂;通过确保您在每个测试中不要尝试做太多事情来解决这个问题,然后如果仍然很复杂,请重构。并且不要忘记为测试而设计:如果您的选择器非常复杂,请考虑<span id="xxxx">...</span>
在它周围添加一个,这样您的测试就可以直接进入它!
您可以将 CasperJS 与PhantomJS和SlimerJS一起使用。我目前更喜欢 SlimerJS,因为:
- PhantomJS 1.x 停留在旧的 WebKit(相当于 Safari 5.1 和 Chrome 13)上,因此测试任何更现代的功能都令人沮丧。
- SlimerJS 可以与 Gecko 引擎一起使用,也可以直接与您安装的 Firefox 版本一起使用。这允许您使用额外的插件、安全证书等配置 Firefox 配置文件。
- SlimerJS 是用 JavaScript 编写的,因此如果您有需要,更容易破解。
一旦 PhantomJS 2.0 发布(希望在 2013 年底左右),或者如果您的网站不依赖任何最新的 HTML5 API,您可以运行 CasperJS 两次,以获得双重覆盖。(顺便说一句,PhantomJS 自然是无头的;SlimerJS 需要使用Xvfb,仅适用于 Linux 或 Mac。)
Selenium为您提供的额外功能是您可以控制其他浏览器,尤其是 IE。(当然,对于 IE,您需要运行 Windows 机器。)Selenium 和 SlimerJS 一样,需要 Xvfb 是无头的(同样,不包括 Windows)。(顺便说一句,支持的浏览器上的 Selenium 文档已经很久没有更新了,但我假设每个浏览器的更高版本至少有相同的支持。)