cy.url未返回预期的字符串

5
在切换到使用哈希路由之前,我经常使用cy.url命令来确保链接在应用程序中导航到正确的URL地址。现在我们使用哈希路由,cy.url不再返回字符串,而是返回一个函数。如何解决这个问题或发生这种情况的原因有什么想法吗?
我在Cypress测试运行器中遇到错误,如下所示: AssertionError:测试对象必须是数组、对象或字符串,但给定了未定义的对象。 因此,我记录了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')
  })
}

你能分享一个示例 GitHub 存储库来展示这种行为吗?我尝试使用你的示例进行复现,但是 cy.url 对我总是返回一个字符串。 - Zach Bloomquist
2个回答

7
这应该会生成一个字符串:
const returnedUrl = null
cy.url().then(url => {
  returnedUrl = url;
});

Cypress的命令是异步的,必须跟随.then()才能产生有用的返回值。

您可以参考此Github问题以获取更多信息: https://github.com/cypress-io/cypress/issues/2150


0

我也遇到了同样的问题。我的解决方案如下。

      cy.url().then(($base_url) => {   
        let id =  $base_url.substr($base_url.lastIndexOf('/'),$base_url.length) 
        cy.log("The id is " + id);
       })

这对我有效。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接