0

我想在整个域上自动化一些技术测试。这些测试可以是加载速度、Yslow 等级、Js 错误、响应状态代码检查……我成功创建了一个抓取给定域的所有 url 的蜘蛛脚本,但是今天我在实现这些测试时遇到了一些问题。

基本上,假设您想从未知的 url 列表中获取已知的指标列表。您将如何实现这一目标?

从我的角度来看,我有两个选择:

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

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

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

    我将失去对执行的控制,并且肯定会出现性能问题。

可能我的理解不正确。脚本是否仅限于对唯一 url 的单个操作?我可以在网络上看到的每个示例总是针对一个(或静态列表)url。

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

任何帮助将不胜感激

4

1 回答 1

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);
    }
}

这有点伪代码,但这样的东西会起作用吗?

于 2013-04-05T15:35:31.970 回答