Puppeteer:使用内置火狐从 2.1 更新到 3.1 后无法访问 iframe 元素



我最近将我的木偶师版本从 2.1 更新到 3.1。我在以前的版本上使用pupeteer-firefox。现在由于pupeteer 3.1内置了Firefox,所以我正在使用它。但这只是Pupeteer的一个实验性功能。

此代码在以前的版本中正常工作。

const elementHandle = await page.$("iframe[src^="https://docs.google.com/picker"] [id=":7"]")
await elementHandle.click()

重现步骤

  • 登录谷歌: https://accounts.google.com/ServiceLogin?hl=en&gl=en
  • 前往: https://www.google.com/maps/d/?hl=en&gl=en
  • 创建新地图
  • 搜索位置并将其添加到地图
  • 单击添加图像图标图像图标

现在将打开一个iframe。我需要单击带有 iframe 和输入图像 urlid=":7"的元素。有人可以帮我吗?

这是木偶师火狐的官方测试结果。

https://hg.mozilla.org/mozilla-central/file/tip/remote/puppeteer-expected.json

针对iframe的每项测试要么是FAIL,要么是SKIP

谷歌不会在 pupeteer 内部提供对火狐的支持。

所以我得出的结论是,使用 pupetteer 无法访问iframe,尤其是在禁止跨站点脚本的情况下。

我已经放弃了木偶师,开始使用微软的剧作家。一切都很顺利。

请注意,不是谷歌正在致力于在Firefox中支持Puppeteer。正如您已经说过的那样,Firefox支持目前处于实验阶段。也就是说,我们正在努力为各种功能和API添加更好的支持,但这不是一个可以在一周内完成的任务。

关于你的问题,我可以说我最近为很多API添加了iframe支持,现在Firefox 79中都可以使用。

另请注意,Playwright使用的是基于最新Firefox测试版的修改和非官方的Firefox版本。