1

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 property 'switchToFrame' of undefined で終わります

4

1 に答える 1

2

nightmare-iframeswitchToFrameは Nightmare >2.x と互換性がありません - Electron には存在しないPhantomJS を呼び出すことができると想定しています。

ここから、次の 2 つのオプションがあると思います。

  1. Nightmare 1.8.x にフォールバックします。(私の知る限りでは) サポートされなくなりましたが、バッキング レンダラーとして PhantomJS で動作します。
  2. 別のライブラリを使用してください。 この PRは、Electron で実行する際の長期にわたる iframe の問題の修正として、Nightmare が必要なものと同様の種類のアクションを実行できるようにする方法として提案されました。プラグインとして書き直しました。これはあなたに役立つかもしれません。(そのプラグインは非常に危険です。注意して使用してください。)

完全を期すために、Nightmare の次のメジャー リビジョンでネイティブ iframe サポートが提案されていることも指摘しておく必要があります。

于 2016-07-15T16:24:51.483 に答える