这是我第一次使用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的选择器是src
和title
。如您所见,我正在使用src
。
我已经搜索并搜索了如何执行此操作,但是这些示例似乎都不适合我。
我被困住了,所以如果有人有任何建议,解决方案或方向,我将不胜感激。
谢谢
乔
答案 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')