在重定向之后做事之前等待 - Puppeteer Node.js
Wait before doing stuff after a redirection - Puppeteer Node.js
我正在尝试使用 Puppeteer 和 Node js 制作脚本,post 从我电脑上的文本文件和图片在网站(如 ebay 或 gumtree)上投放广告
我已经完成了登录、填写表格和上传图片的所有操作,但是在提交表格后我无法进行任何操作(我必须选中一个框并单击验证)
错误日志显示没有找到选择器 newadSubmit、accept_rule 和 lbc_submit
的节点
var promise1 = new Promise(function(resolve, reject) {
setTimeout(function() {
upload(getInfo(absolutePath, "#titre"), workingPath + "1.jpg",
workingPath + "2.jpg",
workingPath + "3.jpg",
getInfo(absolutePath, "#prix"),
getInfo(absolutePath, "#desc"),
getInfo(absolutePath, "#cp"),
1,
getInfo(absolutePath, "#num"));
}, 300);});
promise1.then(function(value) {
page.click('#newadSubmit');
page.waitForSelector('#accept_rule');
page.click('#accept_rule');
page.click('#lbc_submit');});
此外,错误甚至在 upload() 函数完成之前就出现了
您应该像下面这样在 puppeteer 中对异步任务使用 await 关键字。
await page.waitForSelector("#accpt_rule")
而且我也没有看到任何调用 resolve 或 reject 的代码。
promise需要在上传完成后妥善解决或拒绝。
await
不允许用作顶级关键字,必须放在异步函数中。
更改为异步函数也将使承诺可能只处理一次,在调用异步函数的地方;其中,有一个例子如下:
async function foo () {
await page.somepuppeterfunct();
}
foo((x) => { //Here is used to store the output of the async funct
x...Handle expected output //This can be an
});
我正在尝试使用 Puppeteer 和 Node js 制作脚本,post 从我电脑上的文本文件和图片在网站(如 ebay 或 gumtree)上投放广告
我已经完成了登录、填写表格和上传图片的所有操作,但是在提交表格后我无法进行任何操作(我必须选中一个框并单击验证)
错误日志显示没有找到选择器 newadSubmit、accept_rule 和 lbc_submit
的节点 var promise1 = new Promise(function(resolve, reject) {
setTimeout(function() {
upload(getInfo(absolutePath, "#titre"), workingPath + "1.jpg",
workingPath + "2.jpg",
workingPath + "3.jpg",
getInfo(absolutePath, "#prix"),
getInfo(absolutePath, "#desc"),
getInfo(absolutePath, "#cp"),
1,
getInfo(absolutePath, "#num"));
}, 300);});
promise1.then(function(value) {
page.click('#newadSubmit');
page.waitForSelector('#accept_rule');
page.click('#accept_rule');
page.click('#lbc_submit');});
此外,错误甚至在 upload() 函数完成之前就出现了
您应该像下面这样在 puppeteer 中对异步任务使用 await 关键字。
await page.waitForSelector("#accpt_rule")
而且我也没有看到任何调用 resolve 或 reject 的代码。
promise需要在上传完成后妥善解决或拒绝。
await
不允许用作顶级关键字,必须放在异步函数中。
更改为异步函数也将使承诺可能只处理一次,在调用异步函数的地方;其中,有一个例子如下:
async function foo () {
await page.somepuppeterfunct();
}
foo((x) => { //Here is used to store the output of the async funct
x...Handle expected output //This can be an
});