【发布时间】:2021-03-04 20:12:05
【问题描述】:
如果有的话,我如何使用赛普拉斯找到网站中所有损坏的链接?有什么插件可以用吗?
如果不是,我应该如何编写我的代码以查看链接是否返回200 状态(或成功链接)?
谢谢!
【问题讨论】:
标签: automation automated-tests cypress broken-links
如果有的话,我如何使用赛普拉斯找到网站中所有损坏的链接?有什么插件可以用吗?
如果不是,我应该如何编写我的代码以查看链接是否返回200 状态(或成功链接)?
谢谢!
【问题讨论】:
标签: automation automated-tests cypress broken-links
也许是这个?
cy.request('yourlink')
.should((response) => {
expect(response.status).to.eq(200)
})
【讨论】:
<a> 元素,那么也许您需要获取该元素,获取其 href 属性,然后在 href 元素的值上调用 cy.request?
试试这个...
对于第一个选择a[href*="yourdomain.com"],我没有包含“www”的原因是因为对于我的项目,我们也链接到子域,所以我需要包含这些。
在下半场,:not([href=""],同样对于我的项目,出于某种原因我们有这样的链接,所以我必须确保不包含它。
$el.prop("href") 从 DOM 元素中获取 href 值。
我正在使用 cy.request() 向 URL 发送 HTTP 请求,并确保它返回 200 从而证明该页面存在。
代码如下:
cy.get('a[href*="yourdomain.com"]:not([href=""])').each(($el) => {
cy.request($el.prop("href")).as("link");
});
cy.get("@link").should((response) => {
expect(response.status).to.eq(200);
});
您可以将其用于任何页面。您可以在 cypress.json 文件中列出您的页面,也可以通过编程方式将其作为回归测试。
【讨论】:
这是最简单的方法:
cy.request("yourLink")
是的,不需要添加任何断言。因为默认情况下会断言响应不是 404。所以这一行绰绰有余。
如果您想加倍努力并测试页面中的所有链接,请执行以下操作:
cy.get('a').each(link => {
cy.request(link.prop('href'))
})
【讨论】: