Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Puppeter:如何从其父元素选择器获取iframe?_Javascript_Node.js_Google Chrome_Chromium_Puppeteer - Fatal编程技术网

Javascript 使用Puppeter:如何从其父元素选择器获取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

我想获得一个iframe作为frame,并单击该框架中的一个元素,但iframe没有名称,网站有许多框架(
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解决了这个问题,但你的方式更好。我会修正我的代码。非常感谢。