0
私はnightwatchを使ってセレンテストを書いています。Nightwatchの実行メソッド
最終的に(nightwatchのカスタムコマンドで)値を返すコールバックが定義されています。問題は、私はconsole.log
var _someCallBack = function() {
var retValue = false;
browser
.variousNightwatchTasks() //place holder for other things
.execute(function (d) {
//Other custom work injected into the page
return $("span.header_title").length > 0; //I need this true|false
}, [], function(r) {
retValue = r.value; //has the changes; the following outputs as expected
console.log("r = {0} {1}".format(JSON.stringify(r), retValue));
});
//Other things ...
console.log(retValue); //always false which is the problem.
return retValue; //This return needs to execute. I must return the value.
}
内の値の変化を見るにもかかわらずretValue
変数がその値を変更したことがない私は、これは私がこの問題を回避することができますので、どのように欠けているいくつかのJavaScriptニュアンスによるものであると確信しているということです何が起こっているのですか? (前者は後者よりも重要です)
更新:return retValue
は必要なビットです。この関数は、if
ステートメントの戻り値を使用するカスタムnightwatchコマンドへのコールバックで使用されます。
これは何も解決しなかったのでしょうか? 'function(r){コールバック(r.value); } '部分は常にうまく働いた。それはそれ以降の価値を読んでいる。あなたの設定(ネストされたコールバック)でさえ、まったく同じ動作をもたらします。 '_someCallBack'から' r.value'を返す必要があります –
'_someCallBack'から' r.value'を返すことはできません。もう1つの選択肢は、約束を返すことですが、呼び出し関数はそれを解決する必要があります。使用例を教えてください。 –