Ich teste eine Seite, die manchmal ein Widget, und manchmal auch ein anderes rendern wird.Warten auf ein Versprechen oder eine andere
Ich versuche browser.wait()
zu verwenden, um sicherzustellen, dass eine der beiden gerendert hat, bevor Sie mit der entsprechenden interagieren, je nachdem, welche es ist.
Hier ist mein Code:
EC = protractor.ExpectedConditions
browser.wait(() => {
return EC.presenceOf(userField) || EC.presenceOf(notMyAccountElement)
}, WAIT_TIME, 'Lock form (auth0) never appeared.')
notMyAccountElement.isPresent().then((result) => {
if (result) {
notMyAccountElement.click()
browser.wait(EC.presenceOf(userField), WAIT_TIME, 'New lock form (auth0) never appeared.')
}
userField.sendKeys(user)
passField.sendKeys(password)
submitBtn.click()
})
Dies funktioniert in der Regel, aber ich bekomme intermittierende Ausfälle bei:
userField.sendKeys(user)
ich im Browser sehen können, die gelegentlich diese Zeile ausgeführt wird, wenn es tatsächlich notMyAccountElement
ist das ist auf der Seite vorhanden.
Ich denke, das wahrscheinlichste Problem ist, dass die Eröffnung browser.wait()
ist nicht die Auflösung, wie ich es erwarte, aber ich würde gerne verstehen, warum.
Dank @alecxe! Ich werde 'EC.or()' ausprobieren und zurück posten, wenn es meine Probleme löst. –
Ich habe 'EC.or() 'für zwei Stunden ohne einen einzigen Fehler ausgeführt. Dies scheint der Zweck gewesen zu sein. Danke noch einmal! –