我正在进行功能测试并试图完成一些简单的任务。该应用程序是在ReactJS中构建的,我决定使用Phantom / Casper。问题是即使是最基本的任务也会失败。
简而言之,是否有使用Phantom / Casper测试React应用程序的技巧?
我已经安装了Phantom(v.2.1.1)和Casper(v1.1.0-beta5)。作为第一次尝试,我创建了一个捕获图像的简单脚本:
capture.js
var casper = require('casper').create({
viewportSize: {
width: 1024,
height: 768
},
verbose: true,
logLevel: "debug"
});
casper.start('http://localhost:9494', function() {
console.log("page loaded");
});
casper.then(function() {
this.capture('img.png');
});
});
casper.run();
然后运行脚本:
> casperjs capture.js
在我的浏览器中查看localhost:9494
会尽可能地拉出应用程序。但生成的capture()
图片是空白屏幕。
我还尝试添加wait()
,waitForSelector()
和waitForResource()
无济于事。
这是控制台中的输出:
[info] [phantom] Starting...
[info] [phantom] Running suite: 2 steps
[debug] [phantom] opening url: http://localhost:9494/, HTTP GET
[debug] [phantom] Navigation requested: url=http://localhost:9494/, type=Other, willNavigate=true, isMainFrame=true
[debug] [phantom] url changed to "http://localhost:9494/"
[debug] [phantom] Successfully injected Casper client-side utilities
[info] [phantom] Step anonymous 2/2 http://localhost:9494/ (HTTP 200) page loaded
[debug] [phantom] Capturing page to /path/to/img.png
[info] [phantom] Capture saved to /path/to/img.png
[info] [phantom] Step anonymous 2/2: done in 848ms.
[info] [phantom] Done 2 steps in 848ms
[debug] [phantom] Navigation requested: url=about:blank, type=Other, willNavigate=true, isMainFrame=true
[debug] [phantom] url changed to "about:blank"
答案 0 :(得分:3)
您需要将babel-polyfill NPM包添加到您的项目(或任何其他版本的polyfill),然后在您的应用程序的主index.js(x)入口点,将此行包含在顶部:< / p>
import 'babel-polyfill';
我们遇到了您遇到的完全相同的问题,并为我们解决了这个问题 我们曾尝试将babel polyfill作为Casper测试套件的一部分注入,但它没有用。
答案 1 :(得分:1)
不确定你是怎么做的。确保您的捕获处于等待回调中。我通常使用这样的代码,经常需要调整等待时间来查看结果。
3秒通常足以抓取公共网站,这就是我使用它的方式。
casper.then(function() {
this.wait(3000, function() {
this.capture('foo.jpg', undefined,
{
format: 'jpg',
quality: 75
});
});
});