Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 木偶演员如何检查页面是否已导航,如果未导航,如何执行任务_Javascript_Html_Node.js_Puppeteer_Browser Automation - Fatal编程技术网

Javascript 木偶演员如何检查页面是否已导航,如果未导航,如何执行任务

Javascript 木偶演员如何检查页面是否已导航,如果未导航,如何执行任务,javascript,html,node.js,puppeteer,browser-automation,Javascript,Html,Node.js,Puppeteer,Browser Automation,在登录页面上,我试图弄清楚google recaptcha是否出现。如果是这样,我想运行一段代码,或者像往常一样导航 await page.goto( url ); await page.waitForSelector("#username"); await page.type("#username", process.env.EMAIL); await page.type("#password", proces

在登录页面上,我试图弄清楚google recaptcha是否出现。如果是这样,我想运行一段代码,或者像往常一样导航

await page.goto(
    url
  );
  await page.waitForSelector("#username");
  await page.type("#username", process.env.EMAIL);
  await page.type("#password", process.env.PSWD);
  await  page.$eval("#signIn > div > button", (el) => el.click()) //this line sometimes triggers recaptcha

  {//here wait for navigation and check if google captcha appears}

  //then run the following code:
  await page.solveRecaptchas();
  await Promise.all([
    page.waitForNavigation(),
    page.click("#signIn"),
  ]);
我尝试过使用page.waitForNavigation,但如果出现recaptcha,则会导致超时。只有出现google recaptcha时,我才能运行底部代码块吗

我还尝试在
recaptcha token
存在时有条件地运行代码块,但我检查了dom和recaptcha元素始终存在,并且仅提示图像随机选择。基本上,有时我可以导航,而不必执行任何验证码,有时我会收到图像选择提示


谢谢

也许是这样的

const[\uu,导航]=wait Promise.allselled([
元素。单击(),
page.waitForNavigation(),
]);
如果(navigation.status==='completed')/*有导航。*/;
else/*超时,没有导航。*/;

谢谢您的回复。不过,我不想让它等待超时,因为它是一个需要快速高效的机器人。可以降低超时吗?是的,有参数和默认属性:哦,好的,介意分享一些关于如何将选项参数传递给waitForNavigation的技巧吗?我想它是
page.waitForNavigation({timeout:5000})
5秒。@Scythero这不是木偶师的功能,它是一种新语言功能: