噩梦-iframe 动态 iframe 名称

Nightmare-iframe dynamic iframe name

本文关键字:名称 iframe 动态 -iframe 噩梦      更新时间:2023-09-26

如何使用噩梦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]')
}))

但此代码以 - 类型错误:无法读取未定义的属性"switchToFrame"结尾

nightmare-iframe

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

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

  1. 回退到噩梦 1.8.x。它不再受支持(据我所知),但它使用 PhantomJS 作为后备渲染器运行。
  2. 使用其他库。这个 PR 被提议作为与 Electron 运行时长期存在的 iframe 问题的修复,作为让 Nightmare 执行与您需要的类似操作的可能方法。 我将其重写为插件,可能对您有用。 (该插件非常危险。 请小心使用。

为了完整起见,我还应该指出,原生 iframe 支持已被提议用于 Nightmare 的下一个主要修订版。