Spectron中的单击功能不会单击

时间:2019-10-16 09:12:36

标签: javascript webdriver electron ava spectron

我正在研究基于电子(-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个测试失败

     

应用程序应登录

     

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

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

2 个答案:

答案 0 :(得分: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)
    }
})

答案 1 :(得分:0)

签出此存储库,它是如何测试电子应用程序的示例: https://github.com/StephenDavidson/electron-spectron-example

具体来说,他们在这里测试按下按钮的功能。 请注意它们如何导入到顶部的页面中。 Search.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;
  });

看看这是否可以帮助您进一步发展。