Javascript 使用Puppeter:如何从其父元素选择器获取iframe?
我想获得一个iframe作为frame,并单击该框架中的一个元素,但iframe没有名称,网站有许多框架(Javascript 使用Puppeter:如何从其父元素选择器获取iframe?,javascript,node.js,google-chrome,chromium,puppeteer,Javascript,Node.js,Google Chrome,Chromium,Puppeteer,我想获得一个iframe作为frame,并单击该框架中的一个元素,但iframe没有名称,网站有许多框架(page.frames()返回14) 我没有编辑html的权限。我只能编辑JavaScript 我认为在这种情况下,识别iframe的最佳方法是从其父元素 我怎么能和木偶演员一起做呢 #文件 拥有任何元素的id,您可以轻松地在其子元素中循环并找到满足特定条件的所有元素,例如iframe 无法使用Filter函数,因为这不是数组,而是节点列表 var parent=document.get
page.frames()
返回14)
我没有编辑html的权限。我只能编辑JavaScript
我认为在这种情况下,识别iframe的最佳方法是从其父元素
我怎么能和木偶演员一起做呢
#文件
拥有任何元素的id,您可以轻松地在其子元素中循环并找到满足特定条件的所有元素,例如iframe无法使用Filter函数,因为这不是数组,而是节点列表
var parent=document.getElementById(“foo”);
var-iframes=[];
对于(变量i=0;i
#文件
您可以使用该函数从元素句柄返回帧
引用文档:
解析为引用iframe节点的元素句柄的内容框架,否则为null
示例:
const elementHandle=wait page.$('div#foo iframe');
const frame=await elementHandle.contentFrame();
请注意,还应添加这些浏览器启动选项以运行contentFrame方法,否则它将返回null:
const browser = await puppeteer.launch({
headless: false,
args: [
'--disable-web-security',
'--disable-features=IsolateOrigins,site-per-process'
]
});
非常感谢。但是这样的话,我怎么能单击iframe呢?对于给定的元素,click()函数应该可以工作,您可以使用内容文档以获取iframe的节点。noooo。。。我写了这个
constparent=document.getElementById('foo');const framedom=parent.children[0].contentDocument代码>和framedom
为空。这是错误的吗?你是在现实生活中尝试这个例子吗?因为对于上面的示例,它可以为null,因为它不是真正的#document.great!我用frame的url解决了这个问题,但你的方式更好。我会修正我的代码。非常感谢。