在phantomjs中访问iframe的contentDocument

时间:2014-03-04 16:04:14

标签: javascript html dom iframe phantomjs

我在访问iframe的contentDocument时遇到了困难。我正在使用phantomjs(1.9)。我已经研究了各种各样的线程,但似乎没有答案。

这是我的phantomjs脚本,我已经注入了jquery来尝试选择元素。

var page = require('webpage').create();

page.onConsoleMessage = function(msg, lineNum, sourceId) {
    console.log('CONSOLE: ' + msg);
};

page.onError = function(msg) {
    console.log('ERROR MESSAGE: ' + msg);
};

page.open('http://localhost:8080/', function() {

    page.includeJs("http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js", function() {

        page.evaluate(function() {
            console.log( $('iframe').contentDocument.documentElement );
        });

        phantom.exit();
    });

});

除了表单jquery之外,我还使用这两行代码来获取我想要的DOM元素(iframe中的DOM HTML元素)。 PhantomJS似乎无法解析getElementsByTagName('iframe')或$('iframe')之外的任何内容,因为它尚未完成加载?

document.getElementsByTagName('iframe')[0].contentDocument.activeElement;
document.getElementsByTagName('iframe')[0].contentDocument.documentElement;

我也在使用--web-security = no setting disabled

运行脚本

1 个答案:

答案 0 :(得分:0)

我遇到了这个问题,但发现这是因为我没有将代码包装在evaluate()中。你好像在做那件事。试试这个不要使用jquery。

page.evaluate(function (){
      iframe = document.getElementById('iframeName').contentDocument
      iframe.getElementById("testInput").value = "test";
});