尝试在带伪造者的iframe中单击按钮

时间:2019-12-20 21:00:27

标签: 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();

getFrame()错误,因为frameElement作为JSHandle@node返回。

我可以访问iframe的选择器是srctitle。如您所见,我正在使用src

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

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

谢谢

2 个答案:

答案 0 :(得分:1)

我能够解决我的问题。

首先,我得到了页面上列出的所有框架,如下所示:

http://dev.myproject:52841

然后我最终遍历框架以查找特定的 title

var host = Request.Url?.Host;

一旦找到框架对象,我就会从函数中返回它以找到并单击按钮。

答案 1 :(得分:0)

如果要从*.key.com*.keybank.com旁的URL /站点访问iframe,则由于CSP指令而无法打开iframe。

打开chrome开发者控制台,如果您看到此消息,则是因为CSP指令不允许您访问iframe网站网址。

  

拒绝在框架中显示“ 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')