如何正确waitFor()saveScreenShot()执行结束

时间:2013-10-17 21:51:21

标签: webdriver phantomjs webdriver-io

这是我完整的第一次工作测试:

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);
    });
});

好吧,它做的并不多,但经过几个小时的工作才能正确设置环境,它就过去了。现在,我使用它的唯一方法是使用waitFor()方法并调整延迟。它工作正常,但我仍然不明白如何确保等待png文件保存在磁盘上。由于我将处理测试订单,因此在安全保存文件之前,我最终会从测试脚本中挂起。

现在,如何改善此屏幕保存顺序并避免丢失我的屏幕截图?

1 个答案:

答案 0 :(得分: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);
});