重定向后再做之前等待-Puppeteer Node.js

时间:2018-11-01 14:21:23

标签: javascript node.js web-scraping puppeteer advertisement

我正在尝试使用Puppeteer和Node js编写一个脚本,该脚本通过PC上的文本文件和图像在网站(例如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()函数完成之前,该错误也会出现

1 个答案:

答案 0 :(得分:1)

对于puppeteer中的异步任务,应使用await关键字,如下所示。

await page.waitForSelector("#accpt_rule")

而且我也看不到任何代码要求解决您的诺言。

完成上传后,需要正确解决或拒绝承诺。

await不能用作顶级关键字,必须放置在异步函数中。 Source
更改为异步功能也将使其承诺只能在异步功能被调用的地方处理一次。其中,下面是一个示例:

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