如何在 Cypress 中仅保存部分 URL(不含域名)

Pro*_*rus 4 testing url automation path cypress

我正在编写 CY 测试,并试图自己解决它几个小时,但没有成功。你能帮我一下吗:)

每次运行测试时我都会得到新的 URL,例如

https://website.com/en/info/is/here/

我只需要保存

/en/info/is/here/(因此没有域名)

我需要稍后将其与另一个 href 进行比较。

您能否告诉我如何做到这一点,或者至少是方向?多谢!

Tes*_*ick 5

cy.location ()命令为您提供命名部分,因此示例中pathname就是您需要的部分

cy.visit('http://localhost:8000/app/index.html?q=dan#/users/123/edit')

cy.location().should((loc) => {
  ..
  cy.wrap(loc.pathname).as('url1')    
  ...
})
Run Code Online (Sandbox Code Playgroud)

如果您也有搜索或哈希

cy.visit('http://localhost:8000/app/index.html?q=dan#/users/123/edit')

cy.location().should((loc) => {
  ..
  cy.wrap(loc.pathname + loc.search + loc.hash).as('url1')    
  ...
})
Run Code Online (Sandbox Code Playgroud)


小智 5

.split()您可以在 URL 字符串上使用。

保存位置取决于其使用位置。

在一项测试中:

let pathname
cy.url().then((url) => url.split('/').slice(3)).as('pathname1')

...

cy.get('@pathname1').then(pathname1 => {
  expect(pathname1).to.eq(pathname2)
})
Run Code Online (Sandbox Code Playgroud)

测试之间:

let pathname1

it('gets first pathname', () => {
  cy.url().then((url) => pathname1 = url.split('/').slice(3))
})

it('uses first pathname', () => {
  expect(pathname1).to.eq(pathname2)
})
Run Code Online (Sandbox Code Playgroud)