【发布时间】:2021-02-16 13:01:35
【问题描述】:
在登录页面上,我试图确定是否出现了 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 元素始终存在并且只提示随机选择图像。基本上我有时可以导航而无需执行任何验证码,有时会提示我选择图像。
谢谢!
【问题讨论】:
标签: javascript html node.js puppeteer browser-automation