транспортир, время ожидания скрипта после процедуры входа - PullRequest
0 голосов
/ 30 марта 2020

У меня проблема с тестированием процедуры регистрации. Во время ручного входа все нормально. Но во время автоматических тестов я не могу работать со страницей после процедуры входа в систему (объектная модель моей страницы состоит из трех страниц: homePage, loginPage, afterLoginPage). Смотрите третий ожидаемый результат - NOK, я не вижу ни «тело». Но если я останавливаю прогу '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
})

1 Ответ

0 голосов
/ 30 марта 2020

Недостающий ключ в загадке - это Protractors ExpectedConditions, и это одна из лучших вещей в транспортире.

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

Ожидание, которое вы делаете, представляет собой ожидание c, а транспортир поддерживает динамическое ожидание c, что означает что он ожидает только необходимое время, а не общее время.

await browser.wait (E C .visibilityOf (by.tagName ('body)), 10000, "ожидание присутствия тела")

Приведенный выше код ожидает до 10 секунд, на наличие тега body.

Но я бы подождал, пока URL не изменится или не появится какой-либо элемент на главной странице.

Это классический вопрос с изучением транспортира, и часто возникает вопрос .. «Почему не ждать, а ждать».

await, который есть в приведенном ниже коде, ожидает вопрос, если element (...). IsPresent (), так что это простой вопрос для браузера, и он просто отвечает "нет", так как скорее всего, он еще не загружен.

Ожидайте (элемент ожидания (by.tagName ('body')). IsPresent ()). ToBe (true); // NOK

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...