Итак, у меня есть решение cucumberJS / PuppeteerJS для автоматизации тестирования.У меня проблема с проверкой кнопки.Существует кнопка «Загрузить еще», которая появляется, когда в списке есть еще элементы для загрузки, и не появляется, когда все элементы отображаются.
Пример: в списке из 10 элементов сначала будет отображаться только 4, аКнопка Загрузить еще.Вы нажимаете кнопку «Загрузить еще», и теперь отображается 8.Вы выбрали его снова, и все 10 элементов уже есть, а кнопка «Загрузить еще» больше не присутствует.
У меня есть несколько файлов функций, которые вызывают step_definition, которая, в свою очередь, вызывает некоторые функции в world.js
У меня есть какой-то код, чтобы проверить, есть ли кнопка:
const isElementVisible = async (cssSelector) => {
return Promise.resolve(
page.waitForSelector(cssSelector, { visible: true, timeout: settings._5000 })
).then(() => {
return true;
}).catch(() => {
return false;
});
};
Это вызывается:
// Select Load More Agencies button if button is there
async clickButtonLoadMore() {
// check to see if element is visible
let selectorForLoadMoreButton = '[data-test-button="Load More"]';
let loadMoreVisible = await isElementVisible(selectorForLoadMoreButton);
// If button visible, select it
while (loadMoreVisible) {
await page
.click('[data-test-button="Load More"]');
loadMoreVisible = await isElementVisible(selectorForLoadMoreButton);
}
}
Моя проблема в том, что когда я выбираю кнопку Загрузить ещев третий раз, как в примере выше, время ожидания (в page.waitForSelector) не достигает уровня файла объектов и не обрабатывается обещанием.
✔ When the View List button is selected on the navigation pane # features/step_definitions/console_steps.js:7
✖ And click the Load More # features/step_definitions/console_steps.js:31
Error: No node found for selector: [data-test-button="Load More"]
at assert (/Users/huckcarignan/Desktop/sprint04/epay-test-automation/node_modules/puppeteer/lib/helper.js:229:11)
at DOMWorld.click
(/Users/huckcarignan/Desktop/sprint04/epay-test-automation/node_modules/puppeteer/lib/DOMWorld.js:359:5)
at <anonymous>
-- ASYNC --
at Frame.<anonymous> (/Users/huckcarignan/Desktop/sprint04/epay-test-automation/node_modules/puppeteer/lib/helper.js:108:27)
at Page.click (/Users/huckcarignan/Desktop/sprint04/epay-test-automation/node_modules/puppeteer/lib/Page.js:1021:29)
at ePayApp.clickButtonLoadMore (/Users/huckcarignan/Desktop/sprint04/epay-test-automation/features/support/world.js:777:6)
at <anonymous>
- And click the Manage Agency Data row that has the Mega Agency label # features/step_definitions/console_steps.js:11
- And click Agency Accounts # features/step_definitions/console_steps.js:15
Селекторнашел первые два раза, но третий, кнопка не существует, и селектор тайм-аут.Вместо того, чтобы быть пойманным, он идет к огурцу.
Как я могу исправить это так, чтобы тайм-аут был пойман и обработан обещанием?