Javascript 木偶演员:使用dom交互的外部函数
有了Puppeter chrome测试开发工具,我想设置并使用一个外部函数Javascript 木偶演员:使用dom交互的外部函数,javascript,automated-tests,google-chrome-devtools,puppeteer,Javascript,Automated Tests,Google Chrome Devtools,Puppeteer,有了Puppeter chrome测试开发工具,我想设置并使用一个外部函数 const puppeteer = require('puppeteer'); async function setSelectVal(page, sel, val) { page.evaluate((data) => { return document.querySelector(data.sel).value = data.val }, {s
const puppeteer = require('puppeteer');
async function setSelectVal(page, sel, val) {
page.evaluate((data) => {
return document.querySelector(data.sel).value = data.val
}, {sel, val})
}
(async () => {
const browser = await puppeteer.launch({headless: false});
const page = await browser.newPage();
await page.goto('url', {waitUntil: 'load'});
const inputLogin = await page.$('input[name=login]');
await page.focus('input[name=login]');
await page.type('login', {delay: 100});
const inputPassord = await page.$('input[name=password]');
await inputPassord.click();
await page.type('pass', {delay: 100});
const inputValidate = await page.$('input[name=valid]');
await inputValidate.click();
await page.waitForSelector('td.newpageclass');
await setSelectVal(page, 'select[name=targetname]', 'targetvalue')
})();
但它会触发一个错误:
(节点:16312)未处理的PromisejectionWarning:未处理的承诺
拒绝(拒绝id:1):错误:协议错误(Runtime.evaluate):
目标关闭。(节点:16312)[DEP0018]弃用警告:未处理
拒绝承诺是不推荐的。在未来,承诺拒绝
未处理的将使用
非零退出代码
你知道我该怎么做吗?只是范围问题:
setSelectVal函数没有page变量,请确保将其传递给它
const puppeteer = require('puppeteer');
async function setSelectVal(page, sel, val) {
return await page.evaluate((data) => {
return document.querySelector(data.sel).value = data.val
}, {sel, val})
}
(async () => {
const browser = await puppeteer.launch({headless: false});
const page = await browser.newPage();
await page.goto('url', {waitUntil: 'load'});
await setSelectVal(page, 'select[name=targetname]', 5)
})();
这方面的专家不多,但看起来browser.newPage()失败了,请尝试捕获并检查异常,甚至听起来页面为null(即browser.newPage())不是承诺就是返回为空?@PiniH感谢fr Answare,非newage works我编辑页面以显示更多细节案例幸运的是我以前尝试过,但它触发了另一个错误,我编辑了问题以显示错误等待setSelectValnow错误为:(节点:16312)未处理的PromisejectionWarning:未处理的承诺拒绝(拒绝id:1):错误:协议错误(Runtime.evaluate):目标已关闭。(节点:16312)[DEP0018]弃用警告:未经处理的承诺拒绝将被弃用。将来,未经处理的承诺拒绝将使用非零退出代码终止Node.js进程。还要等待页面。评估,发生的(我认为)是因为您不等待事情关闭,因为它认为它不必做任何事情