2

ここに私の完全な最初の動作テストがあります:

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ファイルがディスクに保存されるのを確実に待つ方法がまだわかりません。テスト オーダーを処理するため、ファイルを安全に保存する前に、最終的にテスト スクリプトからハングアップします。

さて、このスクリーン セーブ シーケンスを改善し、スクリーンショットが失われないようにするにはどうすればよいでしょうか?

4

1 に答える 1

0

webdriverjs の変更機能を使用しているため、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);
});
于 2015-03-16T12:30:13.583 に答える