cy.url 没有按预期返回字符串
cy.url not returning a string as expected
在切换到使用哈希路由器之前,我经常执行 cy.url
命令以确保链接在整个应用程序中导航到正确的 URL 地址。现在我们使用散列路由 cy.url
不再生成字符串,而是生成函数。关于如何解决这个问题或发生这种情况的原因有什么想法吗?
我在 cypress 测试运行程序中遇到错误,例如:
AssertionError: object tested must be an array, an object, or a string, but undefined given
所以我记录了 typeof 结果 console.log(typeof(cy.url))
并将函数打印到控制台。
cy.get(dataCyButtonAttribute)
.should('be.visible')
.click()
console.log(typeof(cy.url))
cy.url().then(url => {
const categoryId = url.split(`${linkType}/`)[1]
const category = url.split('admin/')[1]
expect(category).to.contain(linkType)
expect(categoryId).to.equal('new')
})
}
这应该会产生一个字符串:
const returnedUrl = null
cy.url().then(url => {
returnedUrl = url;
});
Cypress 命令是异步的,必须后跟 .then()
才能产生有用的 return 值。
您可以参考这个 Github 问题了解更多信息:
https://github.com/cypress-io/cypress/issues/2150
我遇到了同样的问题。我的解决方案如下。
cy.url().then(($base_url) => {
let id = $base_url.substr($base_url.lastIndexOf('/'),$base_url.length)
cy.log("The id is " + id);
})
对我有用。
在切换到使用哈希路由器之前,我经常执行 cy.url
命令以确保链接在整个应用程序中导航到正确的 URL 地址。现在我们使用散列路由 cy.url
不再生成字符串,而是生成函数。关于如何解决这个问题或发生这种情况的原因有什么想法吗?
我在 cypress 测试运行程序中遇到错误,例如:
AssertionError: object tested must be an array, an object, or a string, but undefined given
所以我记录了 typeof 结果 console.log(typeof(cy.url))
并将函数打印到控制台。
cy.get(dataCyButtonAttribute)
.should('be.visible')
.click()
console.log(typeof(cy.url))
cy.url().then(url => {
const categoryId = url.split(`${linkType}/`)[1]
const category = url.split('admin/')[1]
expect(category).to.contain(linkType)
expect(categoryId).to.equal('new')
})
}
这应该会产生一个字符串:
const returnedUrl = null
cy.url().then(url => {
returnedUrl = url;
});
Cypress 命令是异步的,必须后跟 .then()
才能产生有用的 return 值。
您可以参考这个 Github 问题了解更多信息: https://github.com/cypress-io/cypress/issues/2150
我遇到了同样的问题。我的解决方案如下。
cy.url().then(($base_url) => {
let id = $base_url.substr($base_url.lastIndexOf('/'),$base_url.length)
cy.log("The id is " + id);
})
对我有用。