でコードを参照してください、フルWebDriverJSプロミスAPIについて
var deferred = protractor.promise.defer();
return deferred.promise;
を行うことができるはずこれは、これを行うには間違った方法ですが、分度器制御フローについて知ることが役立つかもしれません。通常のJavascriptを分度器の順序で実行するには、コントロールフローを使用して追加します。
この場合、約束を完了するのを待つのにbrowser.wait
を使用する場合は、自分の約束ライブラリを使用することができます。
var Promise = require('bluebird');
var promises = [];
browser.controlFlow().execute(function() {
var p = new Promise...
promises.push(p);
});
browser.wait(function(){ return Promise.all(promises); }, timeoutMs);
私は定期的な約束のためではない、これを使用しますが、console.log
文またはテストの一部のタイミングを行うため、あるいはファイルへのテストで何かを印刷するfs
を使用します。
var startTime, duration;
browser.controlFlow().execute(function() {
startTime = new Date().getTime();
});
//Protractor code you want timed
browser.controlFlow().execute(function() {
duration = new Date().getTime() - startTime;
console.log("Duration:", duration);
});
ありがとうございます!それは役に立ちます。 https://github.com/angular/protractor/blob/master/docs/api.mdのAPIページに追加する方法はありますか? –
https://github.com/angular/protractor/issues/402で追跡する – Jmr
私は約束を返す関数を作成していますが、分度器でどのように解決/拒否しますか? –