nightwatch-cucumber
を使用し、PageObjects
を使用してテストを自動化しています。 に基づくnightwatch-cucumber
。ですから、私はJavaScriptを初めて使っています。これまでは、Selenium/WebDriverの自動化のための言語としてJavaを使用することをお勧めしました。nightwatch.jsで同じセレクタで複数の要素を処理する
複数の入力フィールドを定義した値で編集したいと考えています。問題は、これらのすべての入力フィールドに同じセレクタがあることです。また、入力フィールドの数は、テストの開始時には分かっていないか、テストごとに異なります。だから、私は解決策が必要です。 JavaScriptで
List<WebElement> listOfElements = webdriver.getElements('input.myclass');
for (WebElement el : listOfElements) {
el.sendKeys("abc");
}
それは少しトリッキーだと私は対処するのか分からない:「聖なる」Javaの世界では、私はこのような何かを行うことができます。私のPageObject
では、私は以下を試みました:
module.exports = {
elements: {},
commands: [{
test() {
this.api.elements('css selector', 'input.myclass',function (result) {
for (var i = 0; i < result.value.length; i++) {
console.log(result.value[i].ELEMENT);
this.api.elementIdValue(result.value[i].ELEMENT, 'abc');
}
});
this.api.pause(3000);
return this.api;
}
}]
};
しかし、これは私のためではありませんでした。この場合、テスト実行中にエラーが発生します(TypeError: Cannot read property 'elementIdValue' of undefined
)。また、次のテスト手順では、複数の入力フィールドで処理が完了する必要があるため、非同期コールバック関数ですべてを処理する必要はありません。
したがって、コールバック関数の有無にかかわらず、nightwatch-cucumber
の複数の要素を処理するためのソリューションを実装するにはどうすればよいですか?その場合、あなたは何を好きですか? @Florent B.
へ
すべてのコマンドが非同期に実行されるため、コールバックを回避する方法はありません。エラーに関しては、 'this.api.elements'に与えられたコールバック内に別の参照を保持する' this'のコンテキストのためです。 –