尝试使用 puppeteer 单击 iframe 中的按钮

Joe*_*Joe 6 javascript puppeteer

这是我第一次使用 puppeteer 进行一些轻型自动化。我在尝试单击位于 iframe 内的按钮时遇到问题。

这是我的代码:

await page.waitForSelector('iframe');
        const frameElement = await page.$(
            'iframe[src="https://ibx.key.com/ibxolb/login/client/index.html"]',
        );
        const frame = await frameElement.getFrame();
Run Code Online (Sandbox Code Playgroud)

由于getFrame()frameElement 作为JSHandle@node.

我可以访问的 iframe 选择器是src和title。正如你所看到的,我正在使用src.

我已经搜索并搜索了如何执行此操作,但这些示例似乎都不适合我。

我被困住了,所以如果有人有任何建议、解决方案或方向,我将不胜感激。

谢谢你,

乔

Edi*_*nto 7

*.key.com如果您从或旁边的 URL/网站访问 iframe *.keybank.com,则由于 CSP 指令,您将无法打开 iframe。

打开 chrome 开发者控制台,如果您可以看到此消息,那么这是因为 CSP 指令不允许您访问 iframe 站点 URL。

拒绝在框架中显示“ https://ibx.key.com/ibxolb/login/client/index.html ”,因为祖先违反了以下内容安全策略指令:“frame-ancestors *.key.com *.keybank .com”。

如果您没有看到上面的任何消息,您可以尝试这样

const frame = page.frames().find(frame => frame.url() === 'https://ibx.key.com/ibxolb/login/client/index.html');

const clickLogin = await frame.click('.login-button-space')

Run Code Online (Sandbox Code Playgroud)