使用PhantomJS运行复合测试

时间:2013-04-05 15:19:30

标签: javascript testing phantomjs headless

我想在整个域上自动执行一些技术测试。这些测试可以是loadpeed,Yslow Grade,Js错误,响应状态代码检查......我成功创建了一个抓取给定域的所有URL的蜘蛛脚本,但今天我在实现这些测试时遇到了一些问题。

基本上,想象一下你想从一个未知的网址列表中获取一个已知的指标列表。你将如何实现这一目标?

从我的观点来看,我有两个选择:

  • 为每个测试创建一个模块,并为父脚本中的每个URL调用它们

    这可能是正确的,但有些脚本是开源的,比如yslow.js:不确定我是否能够转换它们并且它们不再可以运行(因为模块)

    < / LI>
  • 使用新的子进程模块(execFile或spawn)重新调用phantomjs

    我会放松对执行的控制,肯定会遇到性能问题。

也许我的理解不正确。脚本是否仅限于对唯一网址的单个操作?我在网上看到的每个例子总是用于一个(或静态列表)的网址。

我知道PhantomJS不是一个测试框架,它只用于通过合适的测试运行器启动测试。也许我正在尝试使用Phantom做很多事情,我应该尽量保持脚本尽可能简单。

非常感谢任何帮助

1 个答案:

答案 0 :(得分:0)

首先 - 您可能想要了解CasperJS。它运行在Phantom之上,使它更轻松地将事件链接在一起。

第二 - 看起来您可以将所有度量标准脚本设置为按顺序运行,然后将其包装在for循环中,并将URL列表传入该循环。

urls = ['www.google.com', 'www.yahoo.com', 'www.bing.com'];

for each(url in urls) {
    phantom.load(url, function(page) {
        runMetrics(page);
    }
}

这有点像伪代码,但这会有用吗?