提问者:小点点

在输入中设置变量


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

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”

我该怎么解决呢?


共2个答案

匿名用户

您应该在求值箭头函数之后传递参数。 例如page.evaluate(pageFunction,。。。pageFunction arguments)。 医生。

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);
}

匿名用户

由于data不在页面的作用域内。评估,您可以在global中设置它,并使用global检索它,因为它始终在作用域内。

global['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 = global['data'].email;
  });
}