Nightmare-iframe动态iframe名称

时间:2016-07-10 17:42:20

标签: javascript nightmare

如何使用nightmare-iframe插件以随机生成的名称访问iframe?

我试过了

var name = yield nightmare
  .goto(defaultUrl)
  .click('.btn-login')
  .wait('iframe')
  .evaluate(function() {
    return document.getElementsByTagName('iframe');
  });

yield nightmare.use(iframe.withFrameName(name, function(IFnightmare) {
  IFnightmare
    .type('input[name=username]', 'username')
    .type('input[name=password]', 'password')
    .click('button[type=submit]')
}))

但是这段代码的结尾是 - TypeError:无法读取属性' switchToFrame'未定义的

1 个答案:

答案 0 :(得分:2)

nightmare-iframe与Nightmare> 2.x不兼容 - 它希望能够调用PhantomJS' switchToFrame,电子中不存在。

从这里开始,我认为你有两种选择:

  1. 回到Nightmare 1.8.x。它不再受支持(据我所知),但它与PhantomJS作为支持渲染器运行。
  2. 使用其他库。 This PR在与Electron一起运行时被提议作为the long-standing iframe issue的修复程序,作为让Nightmare执行类似操作的可能方法你需要的。我把它重写为plugin,这可能对你有用。 (该插件非常危险。小心使用。)
  3. 为了完整起见,我还应该指出本机iframe支持has been proposed以进行梦魇的下一个重大修订。