Nightmare-iframe动态iframe名称

Nightmare-iframe dynamic iframe name

如何使用 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: Cannot read 属性 'switchToFrame' of undefined

结尾

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

从这里开始,我认为您有两个选择:

  1. 回到 Nightmare 1。8.x. 它不再受支持(据我所知),但它以 PhantomJS 作为支持渲染器运行。
  2. 使用不同的库。 This PR was proposed as a fix for the long-standing iframe issue when running with Electron as a possible way to get Nightmare to perform similar sorts of actions as the ones you need. I rewrote it as a plugin,这可能对您有用。 (该插件非常危险。小心使用。)

为了完整起见,我还应该指出原生 iframe 支持 has been proposed Nightmare 的下一个主要修订版。