我正在使用Cypress测试我的水疗中心。有时页面显示很快,有时却很慢。我需要能够检查在页面加载后将显示的按钮或文本,但不想等待永恒。
我使用的等待时间过长,但希望测试运行得更快。
let targeturl = 'http:\\something.com'
let longwait = 2500
describe('Update Case', () => {
it('Create Case', () => {
cy.visit(targeturl)
cy.wait(longwait)
cy.get('button').contains('Create').click()
我希望能够设置一个等待,直到显示“创建”按钮。
答案 0 :(得分:0)
默认情况下,赛普拉斯将在继续测试之前等待页面加载所有资源。您的cy.wait()
不需要。 cy.visit()
的默认超时为60秒。
此外,cy.get()
将重试找到您的元素,直到该元素存在。默认超时是4秒,但是您可以增加它。
通常需要这样的东西
describe('Update Case', () => {
it('Create Case', () => {
cy.visit(targeturl)
cy.get('button').contains('Create').click()
如果您发现这不起作用,也许是因为您的页面在加载所有资源后需要花费4秒钟以上的时间来呈现,那么您可以执行以下操作:
describe('Update Case', () => {
it('Create Case', () => {
cy.visit(targeturl)
// wait up to 30 seconds for some element to exist before continuing the test
cy.get('.some-element-in-your-app-that-only-exists-once-page-has-loaded', { timeout: 30000 })
cy.get('button').contains('Create').click()
通常,您永远不需要使用cy.wait()
来将测试延迟一定的毫秒数。这样做几乎总是一个坏习惯。
答案 1 :(得分:0)
我认为您可能要使用inter.broker.protocol.version
的{{1}}选项:
timeout
我记得我过去也遇到过类似的问题,当时的Github issue为我提供了一些有用的信息。