const pointName = 'xyz';

 await page.$eval('.popup-dialog input[name=name]', el => el.value =  pointName );


我不明白为什么在此示例中无法解析pointName的原因,
     Error: Evaluation failed: ReferenceError: pointName is not defined

有人可以启发我吗?

最佳答案

问题

设置值的函数在页面上下文中运行。在该上下文中,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
);

关于javascript - 操纵up-访问外部范围变量失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55524329/

10-11 07:25