首页 > 解决方案 > Puppeteer 找不到按钮,无法识别加载的网站

问题描述

第一次使用 Puppeteer 并尝试简单地单击此按钮

要按下的按钮

单击拒绝 cookie 按钮后。那是我的代码:

await page.goto('https://myurl.com');
await page.click('a.cc-btn.cc-deny');
// await page.waitForNavigation();

await page.waitForSelector("#detailview_btn_order", {visible: true});
await page.click("#detailview_btn_order");

单击拒绝 cookie 按钮就像一个魅力。但是,Puppeteer 似乎无法识别第二个按钮。如果我不使用waitForSelector它只是说它找不到它。如果我使用它,即使网站在 5 秒后完成加载,我也会在 30 秒后超时。如果我取消注释waitForNavigation(不管我使用什么选项)我会在那里超时,即使网站在几秒钟内加载。我究竟做错了什么?谢谢!

标签: javascriptpuppeteer

解决方案


你可以试试这个:

await page.goto('https://myurl.com');

await Promise.all([
  page.click('a.cc-btn.cc-deny'),
  page.waitForNavigation(),
]);

const iframeElement = await page.waitForSelector("#my-iframe");
const frame = await iframeElement.contentFrame();

await frame.waitForSelector("#detailview_btn_order", {visible: true});
await frame.click("#detailview_btn_order");

有时点击和导航之间存在竞争条件


推荐阅读