CasperJS 多次截取截图:最新截图覆盖所有之前的截图

CasperJS multiple capture screenshots: Latest screenshot overwrites all previous ojnes

我目前正在研究 CasperJS 并且非常喜欢它。但是,也许这是我在文档中遗漏的内容,我似乎在使用 casper.capture() 时遇到了麻烦。我目前已经将我的设备设置为在测试失败时进行捕获,并将其放入单独的设置模块中,如下所示

function captureFailure(filename){
    casper.test.on("fail", function(failure){
        casper.viewport(1280, 1024);
        casper.capture("failedScreenshots/Failure-"+filename+".jpg", {
            top: 0,
            left: 0,
            width: 1280,
            height: 1024
        });
    });
}

exports.captureFailure = captureFailure;

然后像这样将其放入我的测试中:

.  .  .
// setup
setup.login();

// test
casper.test.begin("Complete new social campaign flow with image as a      signed in user.", 16, function suite(test) {
// setup captureFailure
    setup.captureFailure("SocialFlowImage");  

    casper.start(data.baseURL+'/campaigns/', function(){
        console.log("Campaign page loaded");
        this.click(campaignCreate);
        casper.waitForSelector(socialCampaignCreateModal, function(){
            test.assertExists(socialCampaignCreateModal, 'Modal pops up');
            test.assertTextExists('Deal', 'Deal button exists');
            test.assertTextExists('Marketing Email', 'Marketing Email button exists');
            test.assertTextExists('Facebook', 'Facebook button exists');
        });
    });
.  .  .

在大多数情况下,这是独立工作的,但是当我 运行 我的所有测试一前一后地测试多个故障时,屏幕截图在进行时被覆盖了。按时间顺序,它看起来像这样:

测试 1 -> 测试 1 失败 -> 截图 1 -> 测试 2 -> 测试 2 失败 -> 截图 2 然后覆盖截图 1

这导致了 2 个相同的屏幕截图,但命名约定不同。

有什么想法吗?

发现我在 "fail" 事件上有重叠的事件处理程序。为了解决这个问题,更改了我的 casperjs 测试样式以包含具有 setUp 和 tearDown 函数的测试对象,通过执行

删除了事件句柄

casper.test.removeListener("fail", casper.test.listeners("fail")[0]);

这有点老套,但我的自定义事件处理程序有一个 filename arg 传递给独特的屏幕截图名称和更容易的时间 debugging/identifying 测试 运行 什么。结果,我不得不对它进行 jimmy 装配,因为我的 setUp 实际上有一个附加它的匿名函数。