Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在输入中设置一个变量_Javascript_Node.js_Puppeteer - Fatal编程技术网

Javascript 在输入中设置一个变量

Javascript 在输入中设置一个变量,javascript,node.js,puppeteer,Javascript,Node.js,Puppeteer,我想使用Puppeter更快地登录,我制作了这个脚本,但它将输入变量识别为站点变量 let data = { email : 'mail', password : 'passwd' } async function login(data) { page.evaluate(() => { document.querySelector('#loginlb > div.c-loginlb__popup > div > form > div:n

我想使用Puppeter更快地登录,我制作了这个脚本,但它将输入变量识别为站点变量

let data = {
    email : 'mail',
    password : 'passwd'
}

async function login(data) {
  page.evaluate(() => {
    document.querySelector('#loginlb > div.c-loginlb__popup > div > form > div:nth-child(1) > input').value = data.email;
  });
}
错误如下:评估失败:TypeError:无法读取未定义的属性“email”


如何解决此问题?

由于
数据不在
页面的范围内。请评估
,您可以在
全局
中设置它,并使用
全局
检索它,因为它始终在范围内

global['data']={
电子邮件:“mail”,
密码:“passwd”
}
异步函数登录(数据){
page.evaluate(()=>{
document.querySelector('#loginlb>div.c-loginlb\uu popup>div>form>div:n第n个子项(1)>input')。value=global['data']。电子邮件;
});
}

您应该在evaluate arrow函数之后传递参数。像这样
page.evaluate(pageFunction,…pageFunction参数)


看起来,如果数据对象不在页面中,则function@mattmi1303您在哪里调用登录函数<代码>数据
可能不在范围内,我用这种方式调用函数登录(数据);如果在page.evaluate之前记录数据,则返回对象,但不返回inisde@mattmi1303我用另一种解决方案编辑了我的答案。这是专业的方式
page.evaluate(pageFunction[,…args])
let data = {
    email : 'mail',
    password : 'passwd'
}

async function login(_data) {
  page.evaluate((data) => {
    document.querySelector('#loginlb > div.c-loginlb__popup > div > form > div:nth-child(1) > input').value = data.email;
  },_data);
}