我最近将我的木偶师版本从 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版本。