加载时如何等待电子 html

How can I wait to electron while loading html

我有一个电子应用程序,它在打开时加载了一个 HTML 文件。 当我尝试从打开页面等待带有 waitUntil 方法的元素时,Spectron 试图在页面加载时找到它,它使我的应用程序崩溃,并且应用程序停留在空白页面。我怎样才能等待加载这个 HTML?

我的应用程序启动代码如下:

async start() {
    try {
      await this.spectron.start();
      await this.focusOnWindow(0);
      return this._checkWindowReady();
    } catch (err) {
      throw err;
    }
  }

 beforeEach(async function (){
            app = new SpectronApplication();
            common = new CommonActions();

            await app.start();
 })

我找到了如下代码的解决方案:

首先当我调用 app.start() 时,

start() 函数调用 _checkWindowReady()

_checkWindowReady 调用 waitFor()

最后 waitFor 调用 _callClientAPI() 并查找特定的函数和元素。

 async start() {
    try {
      await this.spectron.start();
      await this.focusOnWindow(0);
      return this._checkWindowReady();
    } catch (err) {
      throw err;
    }
  }

 _checkWindowReady() {
    return this.waitFor(this.spectron.client.getHTML, '[id="myApp.main.body"]');
  }

 waitFor(func, args) {
    return this._callClientAPI(func, args);
  }

 _callClientAPI(func, args) {
    let trial = 1;
    return new Promise(async(res, rej) => {
      while (true) {
        if (trial > this._pollTrials) {
          rej(`Could not retrieve the element in ${this._pollTrials * this._pollTimeout} seconds.`);
          break;
        }

        let result;
        try {
          result = await func.call(this.client, args, false);
        } catch (e) { }

        if (result && result !== '') {
          res(result);
          break;
        }

        await this.wait();
        trial++;
      }
    });
  }