我正在研究基于电子(-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个测试失败
应用程序应登录
错误:测试已完成,没有运行任何断言
这是事实,因为没有任何断言。 但是我可以看到按钮从未被单击过,因为这会触发来自应用程序的“登录失败”消息。
答案 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;
});
看看这是否可以帮助您进一步发展。