量角器,登录过程后脚本超时

问题描述 投票:0回答:1

我在测试记录过程时遇到问题。在手动登录期间,一切都很好。但是在自动测试期间,登录过程结束后我无法使用该页面(我的页面对象模型由三个页面组成:homePage,loginPage,afterLoginPage)。看到第三个期望结果是NOK,我看不到“ body”。但是,如果我停止程序“ browser.pause()”并进行检查,则会看到完整的DOM结构。这是错误消息:

Failed: script timeout
(Session info: chrome=80.0.3987.149)
(Driver info: chromedriver=80.0.3987.106 (f68069574609230cf9b635cd784cfb1bf81bb53a-refs/branch-heads/3987@{#882}),platform=Windows NT 10.0.18363 x86_64)

您能帮忙吗?谢谢

it('Přihlášení uživatele.', async function(){
  await homePage.getUrl('https://...../');
  expect(await element(by.tagName('body')).isPresent()).toBe(true); // OK
  await homePage.clickLogin();
  expect(await element(by.tagName('body')).isPresent()).toBe(true); // OK
  await loginPage.fillUser(email);
  await loginPage.fillPassword(password);
  await loginPage.clickLogin();
  await browser.sleep(3000);
  expect(await element(by.tagName('body')).isPresent()).toBe(true); // NOK
})
angularjs protractor automated-tests
1个回答
0
投票

难题中缺少的关键是量角器的预期条件,这是关于量角器的最好的东西之一。

https://www.protractortest.org/#/api?view=ProtractorExpectedConditions

您正在执行的等待是静态等待,并且量角器支持动态等待,这意味着它仅等待所需的时间,而不等待时间限制的总时间。

await browser.wait(EC.visibilityOf(by.tagName('body)),10000,“等待身体出现”)

上面的代码最多等待10秒钟,直到出现body标签。

但是我可能会等待URL更改或主页上元素的存在。

这是学习量角器的经典问题,经常会遇到这个问题。“为什么不等不等”。

您在下面的代码中具有的await,等待元素(...)。isPresent()的问题,因此这对于浏览器来说是一个简单的问题,并且它仅回答“否”,因为它很可能尚未加载。

expect(await element(by.tagName('body'))。isPresent())。toBe(true); // NOK

© www.soinside.com 2019 - 2024. All rights reserved.