Ich verwende nightwatch-cucumber
mit der Verwendung von PageObjects
, um Tests zu automatisieren. basierend auf nightwatch.js
. Also, ich bin komplett neu in JavaScript. Bisher bevorzugte ich Java als Sprache für die Selenium/WebDriver-Automatisierung.Behandeln Sie mehrere Elemente mit dem gleichen Selektor mit nightwatch.js
Ich möchte mehrere Eingabefelder mit definierten Werten bearbeiten. Das Problem ist, dass alle diese Eingabefelder denselben Selektor haben. Und die Anzahl der Eingabefelder ist zu Beginn eines Tests nicht bekannt oder unterscheidet sich von Test zu Test. Also, ich brauche eine Lösung. In der „heiligen“ java Welt kann ich etwas tun:
List<WebElement> listOfElements = webdriver.getElements('input.myclass');
for (WebElement el : listOfElements) {
el.sendKeys("abc");
}
In JavaScript ist es ein wenig kompliziert, und ich weiß nicht, mit zu behandeln. In meinem PageObject
habe ich versucht, die folgenden:
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;
}
}]
};
Aber das funktionierte nicht für mich. In diesem Fall bekomme ich einen Fehler während der Testausführung (TypeError: Cannot read property 'elementIdValue' of undefined
). Außerdem möchte ich nicht alles in der asynchronen Callback-Funktion behandeln, da die folgenden Testschritte möglicherweise die vollständige Bearbeitung der mehreren Eingabefelder erfordern.
Also, wie kann ich eine solche Lösung implementieren, um mehrere Elemente in nightwatch-cucumber
mit und ohne Callback-Funktionen zu behandeln? Und was bevorzugen Sie in diesem Fall?
Es gibt keine Möglichkeit, den Rückruf zu vermeiden, da alle Befehle asynchron ausgeführt werden. Was den Fehler anbelangt, ist dies auf den Kontext von "this" zurückzuführen, der eine andere Referenz in dem an "this.api.elements" bereitgestellten Callback enthält. –