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>

Можете ли вы показать, какую ошибку тайм-аута вы получаете? Возможны таймауты несколько разных

DublinDev 22.05.2019 16:10

@DublinDev «Ошибка: тайм-аут сценария: результат не был получен в течение 11 секунд», — говорит моя командная строка.

Cem Kocagöz 22.05.2019 16:16
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Обработка ошибок при выполнении HTTP-запросов в JavaScript.
Обработка ошибок при выполнении HTTP-запросов в JavaScript.
Каждый проект должен выполнять HTTP-запросы, и, конечно, некоторые из этих запросов могут содержать ошибки. Нам нужно знать, как обрабатывать эти...
Включение UTF-8 в jsPDF с помощью Angular
Включение UTF-8 в jsPDF с помощью Angular
Привет, разработчики, я предполагаю, что вы уже знаете, как экспортировать pdf через jsPDF. Если ответ отрицательный, то вы можете ознакомиться с моей...
0
2
93
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

browser.wait(ExpectedConditions.presenceOf(headline))

Я не знаю, хорошо ли я справился, но я искал 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; } но у меня все еще та же ошибка

Cem Kocagöz 22.05.2019 15:56
Ответ принят как подходящий

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

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

//30 second timeout
allScriptsTimeout: 30 * 1000

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

у меня есть интервал на странице для проверки каждые 60 секунд, если на сервере есть какие-либо новые данные. это может быть причиной?

Cem Kocagöz 22.05.2019 16:39

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

DublinDev 22.05.2019 16:46
Другой источник относительно зон.
DublinDev 22.05.2019 16:50

я остановил интервал, и теперь все работает хорошо. Спасибо большое. Сейчас я читаю эти статьи, чтобы найти лучшее решение, чем удаление интервала. Думаю, если бы вы мне не помогли, я бы никогда не решил проблему.

Cem Kocagöz 22.05.2019 17:07

Другие вопросы по теме