Javascript 在输入中设置一个变量
我想使用Puppeter更快地登录,我制作了这个脚本,但它将输入变量识别为站点变量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
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);
}