Транспортир не может найти элементы и время ожидания скрипта - PullRequest
0 голосов
/ 29 января 2019

Я запускаю транспортир, он успешно работает и загружает мое угловое приложение.Самый первый тест, который я написал, - это получить кнопку регистрации.Хотя я вижу кнопку регистрации в своем представлении и нацеливаю ее на правильный CSS.

Тем не менее, все, что я получаю, это эту ошибку после запуска теста.

App
    ✗ should get the text of sign up button
      - Failed: script timeout: result was not received in 11 seconds
        (Session info: chrome=71.0.3578.98)
        (Driver info: chromedriver=2.45.615355 (d5698f682d8b2742017df6c81e0bd8e6a3063189),platform=Mac OS X 10.14.2 x86_64)

Я пытался увеличить allScriptsTimeout в файле protractor.conf.ts, но безрезультатно.

app.e2e-spec.ts file

    it('should get the text of sign up button', () => {
      page.navigateTo();
      expect<any>(page.getButtonText()).toEqual('Sign up');
    });

app.po.ts

  getButtonText() {
    return element(by.css('a[data-e2e="nav-signup"]')).getText();
  }

  navigateTo() {
    return browser.get('/');
  }

Что я могу здесь делать не так?

1 Ответ

0 голосов
/ 29 января 2019

Обновлен некоторый синтаксис и удалено асинхронное / ожидание из функции объекта страницы.

Как я уже говорил, ваша ошибка, вероятно, связана с проблемой асинхронности.Можете ли вы попробовать изменить свой код, чтобы отключить promise_manager в conf и использовать синтаксис async / await и посмотреть, поможет ли это вам?

мой предыдущий ответ по теме асинхронного / await &менеджер обещаний

Каждое действие, которое взаимодействует с браузером, будет нуждаться в ожидании перед ним, а каждая функция, содержащая ожидание, должна быть помечена async

Conf.js

exports.config = {
    framework: 'jasmine',
    specs: ['./app.js'],
    // specs: ['./app.js','./app.1.js'],
    seleniumAddress: 'http://localhost:4444/wd/hub',
    SELENIUM_PROMISE_MANAGER: false
}

Объект страницы

getButtonText() {
  return element(by.css('a[data-e2e="nav-signup"]')).getText();
}

navigateTo() {
  return browser.get('/');
}

Файл спецификации

it('should get the text of sign up button', async () => {
  await page.navigateTo();
  expect(await page.getButtonText()).toEqual('Sign up');
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...