Angular E2E使用量角器和角度计测试:在浏览器加载时使量角器等待

Angular E2E使用量角器和角度计测试:在浏览器加载时使量角器等待,angular,protractor,angular-e2e,Angular,Protractor,Angular E2e,我正在测试一个网页,该网页正在访问第三个网站以处理登录(oAuth)。为了测试我的网页,我首先需要让我的e2e测试登录到第三个网站。我能够在第三个网站上找到用户电子邮件地址的输入元素并输入它。 然后,我还可以点击“继续”按钮,第三个网站现在在这里打开一个新的片段,进入passowrd 然后问题出现了:密码字段不可交互,出现以下错误: - Failed: element not interactable (Session info: chrome=87.0.4280.141) (

我正在测试一个网页,该网页正在访问第三个网站以处理登录(oAuth)。为了测试我的网页,我首先需要让我的e2e测试登录到第三个网站。我能够在第三个网站上找到用户电子邮件地址的输入元素并输入它。 然后,我还可以点击“继续”按钮,第三个网站现在在这里打开一个新的片段,进入passowrd

然后问题出现了:密码字段不可交互,出现以下错误:

 - Failed: element not interactable
    (Session info: chrome=87.0.4280.141)
    (Driver info: chromedriver=87.0.4280.20 (c99e81631faa0b2a448e658c0dbd8311fb04ddbd-refs/branch-heads/4280@{#355}),platform=Windows NT 10.0.17763 x86_64)
我认为原因是页面还没有呈现新片段,所以passwort输入字段还不可见。所以我使用了
browser.sleep(1000)
,但这也会停止浏览器,对吗?因此,在1000毫秒过去之后,片段仍然没有加载。 我知道这也有点不对劲

browser.wait(EC.urlContains("The URL of the password input page"))), 1000);
这里的问题是“输入电子邮件”部分和“输入密码”部分的URL相同,因此此命令将检查URL并立即继续

我也试过:

element(by.id("<id of the continueButton on the login fragment>).click().then(() => {
 ->perform my other actions for the passowrt part here
})
当我让浏览器休眠更长时间并在protector打开的浏览器中手动输入密码时,登录成功,我的网站的所有后续测试都通过。天哪,我真希望他们把电子邮件和密码放在同一个视图/片段上,那就没问题了,arg


欢迎提供任何提示;)

在量角器中,一切都是承诺,你应该等待承诺得到解决

await browser.wait(EC.urlContains("The URL of the password input page"))), 1000);
Await只能在异步函数中使用,因为您已将其声明为块异步,可以使用Await


等待浏览器。睡眠(3000)不会停止浏览器,它只是停止量角器向浏览器发送命令3秒钟。这就像在量角器中添加脚本睡眠一样,一切都是承诺,您应该等待承诺得到解决

await browser.wait(EC.urlContains("The URL of the password input page"))), 1000);
Await只能在异步函数中使用,因为您已将其声明为块异步,可以使用Await


等待浏览器。睡眠(3000)不会停止浏览器,它只是停止量角器向浏览器发送命令3秒钟。这与添加脚本sleep

browser.wait(EC.elementtobevible($('Password field')),10000)相同

browser.wait(EC.elementtobevible($('passwordfield')),10000

添加您尝试与之交互的元素的html代码添加您尝试与之交互的元素的html代码现在没有时间,但将在下周尝试,谢谢!现在没有时间,但下周我会试试,谢谢!