用幻影/卡斯珀测试React应用程序[英] Testing React Apps with Phantom/Casper

问题描述

我正在研究功能测试,并尝试使一些简单的任务工作.该应用程序是在ReactJ中构建的,我决定使用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"

推荐答案

您需要将Babel-Polyfill NPM软件包添加到您的项目(或任何其他版本的Polyfill),然后在您的应用程序的主index.js(x)输入点中,在该行中包含此行顶部:

import 'babel-polyfill';

我们遇到了您正在遇到的完全相同的问题,并将其修复为我们.
我们曾尝试将Babel Polyfill作为Casper测试套件的一部分,但它不起作用.

其他推荐答案

不确定您如何等待.确保您的捕获在等待回调中.我通常使用这样的代码,通常会碰巧您需要调整等待时间才能查看结果.

3秒通常足以抓取公共网站,这就是我的使用方式.

casper.then(function() {
    this.wait(3000, function() {
        this.capture('foo.jpg', undefined, 
            {
                format: 'jpg',
                quality: 75
            });
    });
});

本文地址:https://www.itbaoku.cn/post/1740017.html