Codecept js не загружает большинство элементов, waitForNavigation () просто заставляет его зависать навсегда - PullRequest
0 голосов
/ 10 февраля 2020

У меня проблема тестирования с codecept js. Я пытаюсь протестировать приложения в облаке Atlassian, но codeceptjs / puppeteer не может взаимодействовать ни с одним из элементов на странице. Когда я включаю скриншоты, я вижу, что он находится на правой странице, но кодовая строка js может найти только элементы в меню навигации. он даже не может найти элемент body ни по селектору, ни по xpath. Я попытался добавить I.waitForNavigation(), но тесты никогда не продвигаются дальше этого шага. Я попытался установить таймаут в разделе конфигурации, как говорится в документации здесь , но мне не повезло. Я перепробовал все, что они предложили, но он ждет там всегда. если я закомментирую I.waitForNavigation(), он потерпит неудачу, потому что не может найти элемент Бойда. Я использую файл конфигурации по умолчанию, который создается при установке codecept js в каталоге. этот код я пытаюсь проверить, но он вызывает все виды проблем.

I.amOnPage('https://artemis-test2.atlassian.net/wiki/plugins/servlet/ac/com.nurago.confluence.plugins.treecopy/copy-page-tree-confluence?page.id=25821196&space.key=TEST1');

I.waitForNavigation();
// if I don't comment this out it will wait here forever
I.wait(4);
I.waitForElement('.ap-iframe');
// it can find the iframe for some reason but nothing else
I.waitForElement('.body');
// if I do comment it out it fails here because it says there is no body element. can't find it by xpath either.

Понятия не имею, почему это происходит. любая помощь очень ценится.

1 Ответ

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

amOnPage с конфигурацией по умолчанию запускает навигацию и проходит после навигации.

waitForNavigation начнет ждать навигацию после навигации. Так что это никогда не произойдет, если вы не запустите навигацию снова или начнется перенаправление страниц.

У вас есть 2 варианта:

  1. не использовать waitForNavigation и использовать только amOnPage.
  2. используйте waitForNavigation и amOnPage в Promise.all: await Promise.all(I.waitForNavigation(); I.amOnPage(pageUrl));
...