Хобрук: Ваш путь к мастерству в программировании

Angular e2e не ищет тег до истечения времени ожидания после маршрута

Я только начал учиться писать тесты e2e. Я делаю некоторые тесты на первой странице, и все работает хорошо (заголовок, текст тега h1, количество карточек на странице). У меня есть кнопки на карточках на первой странице для поворота на другую страницу. Я нахожу это методом buttonText и делаю .click(). Он поворачивает вторую страницу, как я хочу. Но после этого процесса вращения я пытаюсь проверить текст h1 на второй странице. Но это не работает, и я получаю ошибку тайм-аута. где я виноват? Вот часть моего кода;

приложение-e2e-spec.ts;

    it('should go to measures page', ()=>{
        expect(page.goToMeasuresPage()).toEqual("Measures");
    });

апп.по.ц;

    goToMeasuresPage() {
        this.clickShowMoreButton(); //a function to expand card for show buttons
        let button = element(by.buttonText("Measures"));
        button.click();
        let headline = element(by.css(".container .header h1")).getText();
        return headline;
     }

html второй страницы;

    <div class="container">
        <div class="header">
            <app-back-button></app-back-button>
            <h1>{{ 'MEASURES' | translate }}</h1> //this pipe returns "Measures" text
        </div>
    </div>

  • Можете ли вы показать, какую ошибку тайм-аута вы получаете? Существует несколько разных тайм-аутов, которые могут появиться 22.05.2019
  • @DublinDev Failed: тайм-аут сценария: результат не был получен в течение 11 секунд, говорит моя командная строка. 22.05.2019

Ответы:


1

После каждого действия в пользовательском интерфейсе транспортир проверяет свойство angular на вашем сайте, чтобы убедиться, что страница стабильна (это означает, что все изменения и загрузка на странице завершены).

Эта проблема вызвана тем, что Protractor обнаруживает, что угловая страница не стабилизировалась после действия поворота. Вы можете попробовать увеличить время ожидания по умолчанию в вашей конфигурации, чтобы дать вашему приложению больше времени для загрузки:

//30 second timeout
allScriptsTimeout: 30 * 1000

Если вы все еще получаете тайм-аут, возможно, в вашем приложении есть какое-то действие опроса, которое не позволяет angular распознать, что загрузка завершена. Дополнительную информацию см. в этой теме.

22.05.2019
  • у меня есть интервал на странице для проверки каждые 60 секунд, если на сервере есть какие-либо новые данные. это может быть причиной? 22.05.2019
  • Наверняка причина в этом. Ваша страница никогда не стабилизируется, так как она никогда не завершит загрузку. У вас есть несколько вариантов, чтобы справиться с этим. Вы можете попросить разработчиков переместить setInterval за пределы угловой зоны, см. здесь или можно отключить проверку угловой стабильности с помощью browser.waitForAngularEnabled(false). Более поздний вариант будет означать, что вам нужно самостоятельно обрабатывать все ваши ожидания. 22.05.2019
  • Другой источник относительно зон. 22.05.2019
  • я остановил интервал, и теперь все работает хорошо. Спасибо большое. Сейчас я читаю эти статьи, чтобы найти лучшее решение, чем удаление интервала. Думаю, если бы вы мне не помогли, я бы никогда не решил проблему. 22.05.2019

  • 2

    Добавьте следующую строку после того, как вы назначите let headline в goToMeasuresOage

    browser.wait(ExpectedConditions.presenceOf(headline))

    22.05.2019
  • Я не знаю, хорошо ли я справился, но я искал ExpectedConditions в Интернете и изменил свою функцию таким образом; goToMeasuresPage() { var EC = protractor.ExpectedConditions; this.clickShowMoreButton(); let button = element(by.buttonText("Measures")); button.click(); let headline = element(by.css(".container .header h1")); browser.wait(EC.presenceOf(headline)) return headline; } но у меня все та же ошибка 22.05.2019
  • Новые материалы

    Создание кнопочного меню с использованием HTML, CSS и JavaScript
    Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

    Внедрите OAuth в свои веб-приложения для повышения безопасности
    OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

    Классы в JavaScript
    class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

    Как свинг-трейдеры могут использовать ИИ для больших выигрышей
    По мере того как все больше и больше профессиональных трейдеров и активных розничных трейдеров узнают о возможностях, которые предоставляет искусственный интеллект и машинное обучение для улучшения..

    Как построить любой стол
    Я разработчик программного обеспечения. Я люблю делать вещи и всегда любил. Для меня программирование всегда было способом создавать вещи, используя только компьютер и мое воображение...

    Обзор: Машинное обучение: классификация
    Только что закончил третий курс курса 4 часть специализации по машинному обучению . Как и второй курс, он был посвящен низкоуровневой работе алгоритмов машинного обучения. Что касается..

    Разработка расширений Qlik Sense с qExt
    Использование современных инструментов веб-разработки для разработки крутых расширений Вы когда-нибудь хотели кнопку для установки переменной в приложении Qlik Sense? Когда-нибудь просили..