#javascript #node.js #puppeteer
#javascript #node.js #кукловод
Вопрос:
const pointName = 'xyz';
await page.$eval('.popup-dialog input[name=name]', el => el.value = pointName );
Я не понимаю, почему pointName
не может быть разрешено в этом примере, и я получаю
Error: Evaluation failed: ReferenceError: pointName is not defined
Кто-нибудь может меня просветить?
Комментарии:
1. Я делаю свою ставку. Проблема не с кукловодом
Ответ №1:
Проблема
Ваша функция, которая устанавливает значение, выполняется в контексте страницы. Переменные из Node.js окружение неизвестно в этом контексте и должно быть передано в качестве аргумента вашей функции.
Решение
Для функции page.$eval
вы передаете следующие аргументы:
- Селектор
- Функция: Первым аргументом функции будет элемент. Следующие аргументы будут аргументом, переданным после функции.
- Любое сериализуемое значение: любые значения, переданные в качестве третьего (или даже другого аргумента), будут переданы в качестве второго (или третьего …) аргумента функции.
Собрав все это вместе, вы можете сделать это следующим образом:
await page.$eval(
'.popup-dialog input[name=name]',
(el, pointName) => el.value = pointName, // executed in the page context
pointName // this is the variable from the Node.js environment
);