2017-08-25 3 views
0

Ich habe den folgenden Code von meinem Test zu beenden, die mir einige Probleme verursacht:JS - Warten auf eine Funktion

var array = [] 
for (var b = 0; b < ToAdd.length; b++) { 
     page.open(itemsToAdd[b]) 
     page.load() 
     array.push(page.titleElement) 
     page.addToCartButton.click() 
} 

Was ich erwarte, ist, array.push(page.titleElement) seine Ausführung abgeschlossen ist, bevor page.addToCartButton.click().

Wie erreiche ich das ist JS?

Grüße.

+0

Was derzeit geschieht? – Amogh

+0

In der zweiten Iteration - es beschwert sich, dass es das 'page.titleElement' nicht finden kann. Wenn ich diesen Code kommentieren, ist alles in Ordnung. Ebenso, wenn ich die 'page.addToCartButton.click()' kommentiere und 'page.titleElement' belasse, funktioniert es. Ich kann sie nur zur gleichen Zeit haben – userMod2

+0

Sie haben Ihre eigene beantwortet, BTW Antwort wird von Kumpel gegeben. – Amogh

Antwort

1

Setzen Sie den page.addToCartButton.click() außerhalb der für Klo, wenn Sie für alle Schübe getan werden Wartezeiten. Ansonsten sollte der Code in Ordnung sein.

+0

nur knapp sein Ziel zu verstehen, aber ich brauche alle Elemente im Array 'itemsToAdd [b]' hinzugefügt werden - so, wenn ich den Klick addToCart heraus nehmen, wie wird es ihnen tatsächlich – userMod2

+0

hinzufügen Ich nehme an 'ToAdd.length' in für Bedingung ist die Summe der hinzuzufügenden Elemente, also wie vorgeschlagen, wenn Sie ein Klick-Ereignis herausnehmen und dann Elemente hinzufügen. – Amogh

+0

@Amogh - danke aber tut mir leid - verstehe immer noch nicht, wie das aussehen würde - wenn ich die Klickaktion herausnehme, aber meine wiederholten Schritte sind: Gehe zu Seite -> Titel holen -> Klick Warenkorb hinzufügen – userMod2

0

webdriver.io ist ein Framework, das nur dann, wenn Sie die Komponente sehen können, können Sie es einige Aktionen können wählen, klicken oder zu tun, wenn nicht, können Sie die Aktionen über diese Komponente nicht.

Was mehr ist, kann der Rahmen nicht finden, bevor der DOM gerendert werden. Sie können also die browser.pause(3000) verwenden, um auf die Wiedergabe der Komponente zu warten. Sie können auch die nächsten Aktionen einen Moment warten lassen, um das Problem zu lösen, ich hoffe, das wird Ihnen helfen.

Verwandte Themen