当前行为:
我的代码中出现了上述错误,访问网页并检查它是否包含正确的 URL。
此逻辑适用于网页内的其他链接。
describe('Sectors Tab', function () {
it('finds Software Development', function () {
cy.visit('http://www.afd.co.uk/')
cy.contains('Sectors')
.click({force: true})
cy.contains('Software Development')
.click({force: true})
cy.url()
.should('include', '/sectors/software-development/')
})
期望的行为:
它应该返回一个有效的响应,表明它已通过测试。
就像它对我的其他测试所做的那样:
it('finds Banking and Finance', function () {
cy.visit('http://www.afd.co.uk/')
cy.contains('Sectors')
.click({force: true})
cy.contains('Banking and Finance')
.click({force: true})
cy.url()
.should('include', '/sectors/banks-and-finance/')
})
上述测试的图片
重现步骤:(应用程序代码和测试代码)
有关测试代码的信息请参见上文。
版本
Chrome:76
赛普拉斯:3.4.1
我已经在 GitHub 上报告了这个问题,他们已经关闭了该问题,因为这不是 Cypress 本身的问题。
该成员回复如下:
正如错误所示,该 URL 不包含该
/sectors/banks-and-finance/
部分。您可以在通过的测试中看到,页面导航到
/sectors/banks-and-finance/
已记录 (NEW URL) 的 URL - 在失败的测试用例中,这并未记录 - URL 从未改变。Cypress 在这种情况下显示正确的错误。为什么您的网站无法导航?是因为 Cypress 中的错误导致无法导航吗?如果没有完全可重现的示例可供运行,我根本不知道答案。
参考:https://github.com/cypress-io/cypress/issues/5069
因此,我不知道还能尝试什么。我也没有例子可以给出,因为这是一个易于访问的网页,并且提供了代码。
答案1
更新: 查看网站时,我发现网页上有多个元素包含子字符串“软件开发”。Cypress 查找并单击它找到的第一个元素,但这可能不是您想要的元素。
由于该元素没有 id 或任何其他唯一属性,因此我将执行以下操作:
cy.get('.footer-menu-level-2').eq(1).contains('Software Development').click();
显然,如果您可以要求开发人员添加一个唯一属性,那就更好了。
原始答案:
您是否尝试过手动执行相同操作时查看 URL 是否会发生变化?听起来这像是 SUT 中的一个错误...