#javascript #node.js #puppeteer
#javascript #node.js #кукловод
Вопрос:
Я пытаюсь передать значение в браузер, созданный кукловодом, но появляется эта ошибка:
Не удается прочитать свойство ‘getElementById’ неопределенного
async function start() {
const browser = await puppeteer.launch({
headless : false
});
const page = await browser.newPage();
await page.goto('https://www.google.com/recaptcha/api2/demo?invisible=true');
await page.document.getElementById("g-recaptcha-response").innerHTML === response.text
await Promise.all([
page.click('#recaptcha-demo-submit'),
]);
}
Ошибка в этой строке:
await page.document.getElementById("g-recaptcha-response").innerHTML === response.text
что я делаю не так?
Спасибо.
Комментарии:
1. Что должна делать эта строка? Что, если они не равны?
Ответ №1:
Вы можете использовать только getElementById
в контексте страницы. Используйте page.evaluate
, например:
const html = await page.evaluate(() => {
return document.getElementById("g-recaptcha-response").innerHTML;
});
console.log(html);
Это возьмет значение innerHTML
этого элемента, отправит его обратно в Puppeteer и зарегистрирует его в Node.
Если вы хотите передать что-то на страницу, вам нужно будет передать это page.evaluate
, например
await page.evaluate((arg) => {
return document.getElementById("g-recaptcha-response").value = arg;
}, '123');
Это установит значение текстовой 123
области равным .