单击后cypress记录多个url重定向
我有一个场景,单击submit按钮将重定向到/redirect1页面,我们将在其中执行一些验证并自动重定向到/redirect2,执行一些其他验证并重定向到/success页面 我需要验证一下,在单击提交按钮时,它是否会移动到/redirect1页面,然后移动到/redirect2页面,最后到达/success页面 如何使用cypress自动化此过程如果您知道URL,您可能会执行以下操作单击后cypress记录多个url重定向,cypress,Cypress,我有一个场景,单击submit按钮将重定向到/redirect1页面,我们将在其中执行一些验证并自动重定向到/redirect2,执行一些其他验证并重定向到/success页面 我需要验证一下,在单击提交按钮时,它是否会移动到/redirect1页面,然后移动到/redirect2页面,最后到达/success页面 如何使用cypress自动化此过程如果您知道URL,您可能会执行以下操作 cy.url().should('include', '/redirect1'); cy.url().sho
cy.url().should('include', '/redirect1');
cy.url().should('include', '/redirect2');
cy.url().should('include', '/success');
我假设它会尝试这些,并等待它们发生。我喜欢非常具体地说明我预期会发生什么,所以我通常会做以下操作: 排列:
cy.visit('/')
.getByText('Start the process')
.click()
cy.url().should('eq', `${BASE_URL}/redirect1`)
@
,后跟上面设置的别名(cy.route(…).as(yourAlias)
)。我将我的第一个API调用化名为registerCall
,因此我们在做出进一步断言之前等待该问题的解决:
cy.wait('@registerCall')
cy.url().should('eq', `${BASE_URL}/redirect1`)
cy.findByTestId('loader-component').should('be.visible')
cy.getByText(/^please wait$/i).should('be.visible')
cy.wait('@verifyCall')
cy.url().should('eq', `${BASE_URL}/redirect2`)
另外,
getByText
(以及其他很酷的选择器)来自,它构建在的之上,允许您像用户一样导航应用程序,即主要通过查找文本。有趣。我会仔细考虑的。我的第一个想法是,如果你成功了,那么你就知道成功了。。这些页面上是否有什么东西告诉你,你进入了页面、一些文本、标题等?@Maccurt没有……让我看得更深入一些,我想有一种方式你可以说url进入了某个页面。我想这可能是答案,但我不知道语法,让我看得更深一些。。。我从来没有这样做过,但我认为这是我将来想做的事情。似乎您需要使用cy.location()
,因为重定向是按顺序发生的,所以使用命令的回调形式,每个步骤嵌套在前一个回调中<如果将其指定为@vladkras,则不会定义code>BASE\u URL,抱歉,这里的BASE\u URL
只是一个局部变量。如何构造URL字符串完全取决于您,但流程保持不变。
cy.wait('@verifyCall')
cy.url().should('eq', `${BASE_URL}/redirect2`)