Casperjs访问框架内的框架

时间:2016-06-22 19:17:09

标签: javascript css-selectors casperjs frameset

我正在使用CasperJS编写一个网页脚本,该网页将框架集多次分层2个子框架(在某些情况下会深入3层)。该网站是在线电子邮件客户端的旧版本。我正在尝试检查是否有新消息,如果有,请下载任何附件。

每个页面的格式始终为:第一帧存储登录凭据,第二帧包含实际内容。

我有两个需求:使用waitForSelector调用来查找页面何时完全加载,这总是多层深度,并在最深的节点点击以查找电子邮件消息。

如何访问多帧深度的选择器? CasperJS很容易做到,但是我无法让我的脚本达到多层。

我尝试过使用窗口对象,但CasperJS选择器一直在抛出错误。

casper.waitForSelector(window.frames[1].document.getElementById('frame[name = Frame_A ]'), {
   // when loaded do this
});

1 个答案:

答案 0 :(得分:1)

您不能直接在CasperJS脚本中使用document对象。您应该先等待该帧加载,然后切换到该帧:

casper.start("...", function() {
    casper.waitForSelector(frameSelector, function() {
        casper.withFrame('Frame_A', function () {
            //do something
        });
    })
});