Я выполняю тестирование внешнего интерфейса e2e с использованием WebDriverIo (4.13.2) с CucumberJs.
И я довольно новичок в тестировании e2e.
Мое приложение использует карту Google и имеются маркеры карты.
В основном, мое тестирование e2e требует:
- Подождите, пока инициализируется компонент карты Google
- Поиск DOM маркера карты Google по
browser
объекту из WebDriverIo - Если маркер существует, пройдите тест
Проблема в том, что для инициализации карты Google требуется время.
Иногда для Selenium требуется более 30 секунд.Таким образом, второй сценарий терпит неудачу.(Тайм-аут)
Я пытался browser.pause(30000);
.Итак, Selenium ждет 30 секунд.
Но все равно не получится, зависит от того, насколько быстро Google Map ответитБолее того, я не думаю, что ожидание 30 секунд - это идеальное решение.
Ниже приведен тестовый код.
Мой сценарий:
...
Then I should see map
And I should see map marker
...
Мой шаг:
Then('I should see map', async () => {
const path = 'my-page map-component';
myPage.mapComponent.waitForShadowDomElement(path);
// Wait for 30 seconds
browser.pause(30000);
});
Then('I should see map marker', async () => {
const path = 'my-page ${page}'
// Get marker img src
const marker = await browser.getAttribute(`${path} #map img[src*="marker"] img`, 'src');
assert.isTrue(marker.includes('marker-img.svg'));
});
Я думал, что myPage.mapComponent.waitForShadowDomElement(path);
недостаточно для ожидания инициализации карты Google, потому что она ждет только обложки карты.
У меня также есть тест, подобный browser.waitForVisible(MAP_PATH);
.
Но не повезло.
Как мне дождаться полной загрузки карты Google в WebDriverIo?
Спасибо !!
К вашему сведению, во внешнем интерфейсе я использую компонент Polymer, который WebDriverIo не может обнаружить.
Поэтому я использую стороннюю библиотеку под названием wdio-webcomponents .