我在访问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
运行脚本答案 0 :(得分:0)
我遇到了这个问题,但发现这是因为我没有将代码包装在evaluate()中。你好像在做那件事。试试这个不要使用jquery。
page.evaluate(function (){
iframe = document.getElementById('iframeName').contentDocument
iframe.getElementById("testInput").value = "test";
});