TypeError: Невозможно прочитать свойство 'innerText' из null - PullRequest
0 голосов
/ 21 июня 2019

Я использую "puppeteer": "^1.16.0",.

При попытке проверить мою страницу я получаю следующую ошибку:

Я использую следующий код для проверки правильности данных в таблице:

await page.evaluate(async () => {
        let arr = [];
        let grabFromRow = (row, child) => row
            .querySelector(`td:nth-child(${child})`)
            .innerText // ====> if a value is 'null', I get an error here!
            .trim();

        const rows = "#table > thead > tr"

        const t = document.querySelectorAll(rows)
        for (const r of t) {
            arr.push({
                date: grabFromRow(r, 1).trim(),    
                quarter: grabFromRow(r, 2).trim(),
                consensus_estimate: grabFromRow(r, 3).trim(), 
                reported_eps: grabFromRow(r, 4).trim(),
                gaap_eps: grabFromRow(r, 5).trim(),
                revenue_estimate: grabFromRow(r, 6).trim(),
                actual_revenue: grabFromRow(r, 7).trim(), 
            });
        }
        console.log(arr);

        return arr
    });

Есть предложения, что я делаю не так?

Я ценю ваши ответы!

1 Ответ

2 голосов
/ 21 июня 2019

Таким образом, вы получите ошибку, потому что элемент не существует. Если вы ожидаете, что он будет существовать, то вам нужно выяснить, что в вашем селекторе не так.

Ваш комментарий создает впечатление, что вы ожидаете, что он не существует в определенных случаях. Тогда вам нужно разбить его и убедиться, что элемент существует, прежде чем пытаться получить к нему доступ.

let grabFromRow = (row, child) => {
  const td = row
    .querySelector(`td:nth-child(${child})`)
  return td ? td.innerText.trim() : ''
}

или используйте правдивую проверку и установите значение по умолчанию, если вы хотите его в одну строку

let grabFromRow = (row, child) =>
  (row.querySelector(`td:nth-child(${child})`) || {innerText : ''})
    .innerText // ====> if a value is 'null', I get an error here!
    .trim();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...