要素属性が空でない値を持つのを待たなければならない分度器テストを作成していて、その値を呼び出し元関数に戻したいとします。これは私が予想した以上に書くのが難しいことが分かっています!分度器の要素属性値を取得する
browser.wait()
コマンドを正しくスケジュールして、要素の属性が空でない値を待つことができました。この値が実際にコールバック関数内に入ると予想されていることが確認されていますが、理由は、私はコールバック関数の外で、テストコードの残りの部分にその値を返すことができません。私は、実行の順序は、私は、コールバック関数内console.log()
呼び出しのコメントを解除したときに、私が見るので、私は、それがあることを期待していないことを伝えることができ
function test() {
var item = getItem();
console.log(item);
}
function getItem() {
var item;
browser.wait(function() {
return element(by.id('element-id')).getAttribute('attribute-name').then(function(value) {
item = value;
// console.log(item);
return value !== '';
});
});
return item;
}
:ここ
は次のように私のコードがどのように見えるかです期待値が印刷されます。ただし、test()
関数の同じ呼び出しが「未定義」を出力します。
ここでは何が起こっていますか?私は何が欠けていますか?コールバック関数から属性値を正しく取得するにはどうすればよいですか?
ご協力いただきありがとうございます。
ありがとうございます!マイナーな修正を加えれば、私の場合は最後のアプローチが有効です。私は項目値を呼び出し側関数に直接返すことができるようにしたいと考えていましたが、非同期呼び出しの約束については、これは正しい考え方ではないようです。最後の行は 'return item.promise;'でなければなりません。 – exbuddha