Кукольник - Передача переменной в page.evaluate () - PullRequest
0 голосов
/ 06 ноября 2019

Я пытаюсь очистить кучу таблиц на странице с помощью Puppeteer, но количество таблиц меняется каждый раз, и поэтому мне нужно передать переменную в функцию page.evaluate ().

У меня есть массив, содержащий переменные, которые мне нужно использовать, но позвольте мне сказать, что я хочу проверить вторую таблицу вручную, используя переменную, вот как я подошел к проблеме изначально:

const x = 2
let value = await page.evaluate(() =>
document.querySelector("#pageBody > div:nth-child(" + x + ") > table > tr > td").innerText
);
console.log(value);

//Evaluation failed: ReferenceError: x is not defined

После некоторогоИсследуйте, насколько я понимаю, правильный способ передачи переменной там:

const x = 2;
let value = await page.evaluate((x) => { 
document.querySelector("#pageBody > div:nth-child(" + x + ") > table > tr > td").innerText 
}, x);
console.log(value);

//value = undefined

Но так как я не получаю желаемых результатов, я что-то делаю неправильно или неправильно понимаю. Есть идеи?

Ответы [ 2 ]

0 голосов
/ 06 ноября 2019

Я просто добавлю это, чтобы устранить некоторую путаницу, если вы делаете это в функции стрелки в одну строку, вам не нужно возвращать:

const css = "#pageBody > div:nth-child(" + x + ") > table > tr > td"
let value = await page.evaluate((css) => document.querySelector(css).innerText), css);
0 голосов
/ 06 ноября 2019

Разобрался. Конечно, через 5 минут после публикации в SO следующие часы разочарования, но здесь идет:

const x = 2;
let value = await page.evaluate((x) => { 
return Promise.resolve(document.querySelector("#pageBody > div:nth-child(" + x + ") > table > tr > td").innerText) 
}, x);
console.log(value);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...