iframe内的Web元素的QuerySelector

snu*_*nug 21 html javascript iframe css-selectors selenium-webdriver

编辑:新标题.我正在寻找的是iframe中元素的document.querySelector.

我做了很多谷歌搜索的答案,最后我很难过.

我正在尝试在iframe内部进行查询.我正在构建在Selenium中使用的字符串选择器,通常我只是使用Firebug检查元素,并使用document.querySelectorAll("theStringIBuid");

但它不适用于iframe中的元素.我已经尝试了以下所有内容在"page-iframe"iframe中获取元素"radiobutton1".

var elem1 = ".page-iframe";
console.log(elem1);
var elem2 = ".radiobutton1";
console.log(elem2);
document.querySelectorAll(elem1+elem2+"");

document.querySelectorAll('.page-iframe').contentWindow.document.body.querySelectorAll('.radiobutton1')
document.getElementById('.page-iframe').contentWindow.document.body.innerHTML;

[].forEach.call( document.querySelectorAll('.page-iframe'), 
function  fn(elem){ 
console.log(elem.contentWindow.document.body.querySelectorAll('.radiobutton1')); });

var contentWindow = document.getElementById('.page-iframe').contentWindow 
var contentWindow = document.querySelectorAll('.page-iframe') 
var contentWindow = document.querySelectorAll('.page-iframe')[0].contentWindow
Run Code Online (Sandbox Code Playgroud)

谢谢-

cre*_*gox 22

简单的es6改编自h3manth:

document.querySelectorAll('iframe').forEach( item =>
    console.log(item.contentWindow.document.body.querySelectorAll('a'))
)
Run Code Online (Sandbox Code Playgroud)

  • 未捕获的安全错误:阻止来源为“https://xxx.xxx.xx”的框架访问来源为“https://www.google.com”的框架。协议、域和端口必须匹配。”,来源:https://xxx.xxx.xx/#!/ (1) (4认同)

Aer*_*ang 15

如果原始网页的网址与iframe内容不在同一个网域,则javascript会将iframe视为黑框,这意味着它不会在其中看到任何内容.


Roy*_*mes 11

你可以这样做: document.querySelector("iframe").contentWindow.document.querySelector("button") https://m.youtube.com/watch?v=-mNp3-UX9Qc


Cha*_*ige 8

你可以简单地使用

document.querySelector("iframe").contentDocument.body.querySelector("#btn")
Run Code Online (Sandbox Code Playgroud)

第一个查询选择器是选择 iframe。然后我们可以使用内容文档访问 iram dom 并使用第二个查询选择器来选择 iframe 内的元素。

  • 仅代码答案被认为是低质量的。您应该在答案中添加一些文字,解释您正在做什么以及为什么它有效。 (2认同)