У меня есть проект codeceptjs / puppeteer, и я создаю собственный помощник для доступа к информации в таблицах. Я смог выполнить эту работу, но только поставив двухсекундное ожидание на моем этапе тестирования перед вызовом функции async в моем пользовательском вспомогательном классе. Учитывая, что все это основано на async / await, я должен полагать, что я просто что-то упускаю, и есть чистый способ сделать это.
Функция из моего вспомогательного класса.
async getRowCount() {
//const browser = this.helpers['Puppeteer'].browser;
const page = this.helpers['Puppeteer'].page;
page.waitForSelector('tbody');
let rowCount = await page.$$eval('tbody tr', rows => rows.length);
return rowCount;
// These work
// page.waitForSelector('a[href="#/site/create"]');
// page.click('a[href="#/site/create"]');
}
Мой сценарий codeceptjs ниже.
Scenario.only('Table check ALL', async (I, loginAs) => {
loginAs('bob');
I.say(await I.getRowCount());
I.wait(3);
});
Когда код выглядит так, как показано выше, мой счетчик строк всегда возвращается в 0.
Однако, если я поставлю 1-секундное ожидание непосредственно перед функцией I.getRowCount (), то будет возвращено правильное общее количество строк для селектора tbody tr.
Если кто-нибудь может помочь мне понять, почему это происходит, и что я могу сделать, чтобы это исправить, чтобы мне не пришлось добавлять в код ручные шаги ожидания, чтобы приспособить эти вспомогательные функции (основная функция codeceptjs), я был бы очень признателен.
Спасибо!