Javascript 正在尝试使用Puppeter单击iframe中的按钮
这是我第一次使用木偶演员进行灯光自动化。我在尝试单击iframe中的按钮时遇到问题 这是我的密码:Javascript 正在尝试使用Puppeter单击iframe中的按钮,javascript,puppeteer,Javascript,Puppeteer,这是我第一次使用木偶演员进行灯光自动化。我在尝试单击iframe中的按钮时遇到问题 这是我的密码: await page.waitForSelector('iframe'); const frameElement = await page.$( 'iframe[src="https://ibx.key.com/ibxolb/login/client/index.html"]', ); const frame = await
await page.waitForSelector('iframe');
const frameElement = await page.$(
'iframe[src="https://ibx.key.com/ibxolb/login/client/index.html"]',
);
const frame = await frameElement.getFrame();
由于frameElement作为JSHandle@node
我可以访问iframe的选择器是src
和title
。如您所见,我正在使用src
我一直在寻找如何做到这一点,但所有的例子似乎都不适合我
我被困住了,所以如果有人有任何建议、解决方案或方向,我将不胜感激
谢谢,
Joe如果您从
*.key.com
或*.keybank.com
旁边的URL/站点访问iframe,则由于CSP指令,您无法打开iframe
打开chrome开发者控制台,如果你能看到这条消息,那是因为CSP指令不允许你访问iframe站点URL
拒绝在帧中显示“”,因为某个祖先违反了以下内容安全策略指令:“frame祖先*.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')
我能够解决我的问题 首先,我得到了页面上列出的所有框架,如下所示:
var frames = (await page.frames());
然后,我在各个框架中循环寻找一个特定的标题
exports.getFrame=异步函数(frames,ssoframetTitle){
让我们选择框架;
for(设i=0;iexports.getFrame = async function(frames, ssoFrameTitle) {
let selectedFrame;
for(let i = 0 ; i < frames.length ; ++i) {
let frameTitle = await frames[i].title();
if(frameTitle === ssoFrameTitle) {
selectedFrame = frames[i];
break;
}
}
return selectedFrame;};