繁体   English   中英

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

这样就产生了两个相同的屏幕截图,但命名约定不同。

有任何想法吗?

弄清楚我在“失败”事件上有重叠的事件处理程序。 为了解决这个问题,更改了我的casperjs测试样式,使其包含带有setUp和tearDown函数的测试对象,并通过执行以下操作删除了事件句柄

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

这有点hacky,但是我的自定义事件处理程序传入了一个filename arg,以获取唯一的屏幕截图名称,并且调试/识别哪个测试运行了哪个更容易。 结果,由于我的setUp实际上有一个附加它的匿名函数,因此我不得不进行绑定。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM