0

我正在开发基于电子(-nuxt)的应用程序。用 AVA + Spectron 重写的端到端测试。然而,该.click()功能似乎不起作用。

我使用了这个模板: https ://github.com/michalzaq12/electron-nuxt

除了单击一个简单的按钮外,一切似乎都有效。

<footer class="modal-card-foot">
  <button id="loginButton" class="button " type="button" @click="login">
    Login
  </button>
</footer>
test('app should login', async t => {
    let app = t.context.app
    await app.client.click('#loginButton')
})

我得到的信息是:

1 次测试失败

应用程序应该登录

错误:测试完成但没有运行任何断言

这是真的,因为没有任何断言。但是我可以看到该按钮从未被单击,因为这会触发来自应用程序的“登录失败”消息。

4

2 回答 2

0

查看这个 repo,它是如何测试电子应用程序的示例: https ://github.com/StephenDavidson/electron-spectron-example

特别是他们测试按下按钮的功能的地方。请注意它们如何在顶部的页面中导入。 搜索.js

const SearchPage = require('./page-objects/search.page');


Then near the bottom they test the functionality of click

  it('should search', async() => {
    const input = 'this is a test';
    await app.client.url(config.url)
      .setValue(SearchPage.searchField, input)
      .getValue(SearchPage.searchField)
      .should.eventually.equal(input)
      .click(SearchPage.searchButton)
      .element(SearchPage.searchResult)
      .should.eventually.exist;
  });

看看这是否能帮助你走得更远。

于 2019-11-19T22:16:33.103 回答
0

在您的测试用例中,您应该等待元素在页面上呈现。

test('app should login', async t => {
    const ELEMENT_SELECTOR = '#loginButton'
    let app = t.context.app
     try {
      await app.client.nuxt.ready()
      await app.client.nuxt.navigate('/') //optional
      await app.client.waitForExist(ELEMENT_SELECTOR)
      await app.client.click(ELEMENT_SELECTOR)
      t.pass() //or other assertion
    } catch (e) {
      t.fail(e.message)
    }
})

于 2019-10-24T19:41:52.070 回答