2013-10-17 50 views
2

這裏是我的全部第一工作測試:工作好幾個小時如何正確WAITFOR()執行的saveScreenShot()結束

var expect = require('chai').expect; 
var assert = require('assert'); 
var webdriverjs = require('webdriverjs'); 
var client = {}; 
var webdriverOptions = { 
    desiredCapabilities: { 
     browserName: 'phantomjs' 
    }, 
    logLevel: 'verbose' 
}; 

describe('Test mysite', function(){ 
    before(function() { 
     client = webdriverjs.remote(webdriverOptions); 
     client.init(); 
    }); 
    var selector = "#mybodybody"; 
    it('should see the correct title', function(done) { 
     client.url('http://localhost/mysite/') 
      .getTitle(function(err, title){ 
       expect(err).to.be.null; 
       assert.strictEqual(title, 'My title page'); 
      }) 
      .waitFor(selector, 2000, function(){ 
       client.saveScreenshot("./ExtractScreen.png"); 
      }) 
      .waitFor(selector, 7000, function(){ }) 
      .call(done); 
    }); 
    after(function(done) { 
     client.end(done); 
    }); 
}); 

好吧,它不會做太多,但畢竟拿到environement正確設置,它通過了。現在,我得到它的唯一方法就是使用waitFor()方法並調整延遲。它的工作原理,但我仍然不明白如何肯定等待一個PNG文件保存在磁盤上。正如我將處理測試命令一樣,在安全地保存文件之前,我最終會從測試腳本中掛斷。

現在,我該如何改進這個屏幕保存序列並避免丟失我的屏幕截圖?

回答

0

由於您正在使用webdriverjs的chaning功能,因此在waitFor函數中使用回調是錯誤的。

函數saveScreenshot也被鏈接。所以正確的方法如下:

it('should see the correct title', function(done) { 
    client.url('http://localhost/mysite/') 
     .getTitle(function(err, title){ 
      expect(err).to.be.null; 
      assert.strictEqual(title, 'My title page'); 
     }) 
     .waitFor(selector, 2000) 
     .saveScreenshot("./ExtractScreen.png") 
     .call(done); 
}); 
+0

問題發佈已有2年。我接受這個答案,直到我測試它,我現在遠離這個用法。 – Alain