Кукольник - сбой доступа к внешней области видимости - PullRequest
1 голос
/ 04 апреля 2019
 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 Ответ

2 голосов
/ 04 апреля 2019

Задача

Ваша функция, которая устанавливает значение, запускается в контексте страницы. Переменные из среды Node.js неизвестны в этом контексте и должны быть переданы в качестве аргумента вашей функции.

Решение

Для функции page.$eval вы передаете следующие аргументы:

  1. Селектор
  2. Функция : Первым аргументом функции будет элемент. Следующие аргументы будут аргументами, передаваемыми после функции.
  3. Любое сериализуемое значение : Любые значения, переданные в качестве третьего (или даже другого аргумента), будут переданы в качестве второго (или третьего ...) аргумента функции.

Собрав все вместе, вы можете сделать это так:

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
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...