gpt4 book ai didi

javascript - 等待一个或另一个 promise

转载 作者:行者123 更新时间:2023-11-29 17:52:36 25 4
gpt4 key购买 nike

我正在测试一个页面,该页面有时会呈现一个小部件,有时会呈现另一个小部件。

我正在尝试使用 browser.wait() 来确保两者中的一个已经呈现,然后根据它是哪个来与适当的交互。

这是我的代码:

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()
})

这通常有效,但我在以下位置遇到间歇性故障:

userField.sendKeys(user)

我可以在浏览器中看到,当页面上实际出现的是 notMyAccountElement 时,偶尔会执行此行。

我认为最有可能的问题是打开 browser.wait() 没有按照我期望的方式解决问题,但我想了解原因。

最佳答案

我认为您没有正确应用预期的条件,您需要使用 EC.or() :

browser.wait(EC.or(EC.presenceOf(userField), EC.presenceOf(notMyAccountElement)), 
WAIT_TIME, 'Lock form (auth0) never appeared.')

并且,由于您正在与 userField 进行交互,因此您可能应该使用 visibilityOfelementToBeClickable 而不是 presenceOf 预期条件。不过,我怀疑这与间歇性故障有关。

您还可以将等待从等待 userField 的存在/可见性更改为不可见/过时的 notMyAccountElement。替换:

browser.wait(EC.presenceOf(userField), WAIT_TIME, 'New lock form (auth0) never appeared.');

与:

browser.wait(EC.stalenessOf(notMyAccountElement), WAIT_TIME, 'New lock form (auth0) never appeared.');

或者,您可以同时使用两者,使事情变得更加可靠。

关于javascript - 等待一个或另一个 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42006626/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com