node-phantom处理iframe的超链接失败

时间:2014-08-12 03:04:07

标签: node.js iframe phantomjs

最近,我通过phantomjs-node整合了节点和幻像。我打开了有iframe元素的页面,我可以获取iframe的超链接元素,但是当我执行点击它时失败了。 你有办法吗?有人可以帮帮我吗?

示例:

page.open(url);
...
page.evaluate(function(res){
              var childDoc = $(window.frames["iframe"].document),
              submit = childDoc.find("[id='btnSave']"),
              cf = submit.text();//succeed return text  
              submit.click()//failed   
          return cf;
      },function(res){
              console.log("result="+res);//result=submit
              spage.render("test.png");//no submit the form
              ph.exit();

      });

1 个答案:

答案 0 :(得分:2)

您无法在iframe中执行内容。你只能从中读取。您甚至从iframe创建了一个新文档,该文档仅包含iframe的文本表示形式,但它绝不会链接到原始iframe。

您需要使用page.switchToFrame切换到框架以执行框架上而不先复制它。

看起来switchToFrame未在phantomjs-node中实现。您可以尝试node-phantom

如果iframe位于同一个域中,您可以尝试here中的以下内容:

submit = $("iframe").contents().find("[id='btnSave']")
cf = submit.text();
submit.click()

如果iframe不是来自同一个域,则需要创建关闭了网络安全的页面:

phantom.create('--web-security=false', function(page){...});