【问题标题】:Casperjs access a frame within a frameCasperjs 访问框架内的框架
【发布时间】:2016-10-24 21:31:05
【问题描述】:

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

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

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

如何访问多帧深度的选择器? CasperJS 让做一个变得非常容易,但我无法让我的脚本向下到达多个层。

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

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

【问题讨论】:

  • 如果给定的答案解决了你的问题,你可以accept它。如果没有,请详细说明问题所在。

标签: javascript css-selectors casperjs frameset


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-11
    • 2019-10-18
    • 2013-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多