簡體   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