Придется использовать ручной wait (), чтобы получить настраиваемый помощник CodeceptJS / Puppeteer для просмотра таблицы (td tr)

У меня есть проект 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), я был бы очень признателен.

Спасибо!


person bboursaw73    schedule 16.09.2020    source источник


Ответы (1)


Вам нужно дождаться waitForSelector:

await page.waitForSelector('tbody');

Почти все page методы возвращают обещания, поэтому их нужно ждать.

person Vaviloff    schedule 16.09.2020
comment
Ах, спасибо! Я начал с примера с сайта csjs, и на нем их не было, но он имеет смысл. Очень признателен! - person bboursaw73; 17.09.2020