如何等待我的自定义命令完成,然后执行剩余的赛普拉斯命令
How to wait my custom command finish, then executing remaining Cypress commands
我在使用 Cypress 异步机制时遇到了问题。我有一个放在这个文件中的自定义命令
class HeaderPage {
shopLink = 'a[href="/angularpractice/shop"]'
homeLink = ''
navigateToShopPage() {
cy.get(this.shopLink).click()
}
sshToServer() {
setTimeout(() => {
console.log('Connecting')
}, 5000)
console.log('Connected')
}
}
export default HeaderPage
函数sshToServer模拟暂停5000ms。所以我希望赛普拉斯剩余的测试将被搁置并等待这个功能完成。我怎样才能做到这一点?提前致谢。
import HeaderPage from "../support/pageObjects/HeaderPage"
describe('Vefiry Alert and Confirm box', () => {
const headerPage = new HeaderPage()
it('Access home page', () => {
cy.visit(Cypress.env('url') + 'AutomationPractice/')
});
it('SSH to server', () => {
headerPage.sshToServer()
});
it('Verify content of Alert', () => {
cy.get('#alertbtn').click()
cy.on('window:alert', (alert) => {
expect(alert).to.equal('Hello , share this practice page and share your knowledge')
})
});
您可以使用值 null
发出新的 cy.wrap
命令并在 .then
函数中调用您的异步函数。赛普拉斯将自动解决该异步功能,然后继续下一个测试。
首先,您应该将 sshToServer
方法转换为 async(promise) 函数:
sshToServer() {
console.log('Connecting');
return new Promise((resolve) => {
setTimeout(() => {
console.log('Connected');
resolve();
}, 5000);
});
}
然后,在您的规范中:
it('SSH to server', { defaultCommandTimeout: 5000 }, () => {
cy.wrap(null).then(() => headerPage.sshToServer());
});
请注意,我还为规范 defaultCommandTimeout
使用了更大的超时时间,因为默认超时为 4 秒,比您的 sshToServer
方法短,如果不使用更大的超时。
抱歉回答晚了,但我认为这是最简单的方法
cy.wait(milliseconds)
我在使用 Cypress 异步机制时遇到了问题。我有一个放在这个文件中的自定义命令
class HeaderPage {
shopLink = 'a[href="/angularpractice/shop"]'
homeLink = ''
navigateToShopPage() {
cy.get(this.shopLink).click()
}
sshToServer() {
setTimeout(() => {
console.log('Connecting')
}, 5000)
console.log('Connected')
}
}
export default HeaderPage
函数sshToServer模拟暂停5000ms。所以我希望赛普拉斯剩余的测试将被搁置并等待这个功能完成。我怎样才能做到这一点?提前致谢。
import HeaderPage from "../support/pageObjects/HeaderPage"
describe('Vefiry Alert and Confirm box', () => {
const headerPage = new HeaderPage()
it('Access home page', () => {
cy.visit(Cypress.env('url') + 'AutomationPractice/')
});
it('SSH to server', () => {
headerPage.sshToServer()
});
it('Verify content of Alert', () => {
cy.get('#alertbtn').click()
cy.on('window:alert', (alert) => {
expect(alert).to.equal('Hello , share this practice page and share your knowledge')
})
});
您可以使用值 null
发出新的 cy.wrap
命令并在 .then
函数中调用您的异步函数。赛普拉斯将自动解决该异步功能,然后继续下一个测试。
首先,您应该将 sshToServer
方法转换为 async(promise) 函数:
sshToServer() {
console.log('Connecting');
return new Promise((resolve) => {
setTimeout(() => {
console.log('Connected');
resolve();
}, 5000);
});
}
然后,在您的规范中:
it('SSH to server', { defaultCommandTimeout: 5000 }, () => {
cy.wrap(null).then(() => headerPage.sshToServer());
});
请注意,我还为规范 defaultCommandTimeout
使用了更大的超时时间,因为默认超时为 4 秒,比您的 sshToServer
方法短,如果不使用更大的超时。
抱歉回答晚了,但我认为这是最简单的方法
cy.wait(milliseconds)