cypress中有没有办法查看页面证书信息? 手动,我们只需单击顶部面板中 URL 旁边的锁定图标,然后单击“证书”。 我希望在“发布者”部分运行断言。如果证书是由特定方颁发的,那么我的测试应该通过,否则应该失败。 如果有办法做到这一点,请指导我。 谢谢
经过多次尝试从 JS 构建的方法(如 TLSSocket 或库(如 puppeteer 或上面提到的库)获取有关服务器证书的信息,以获取该信息,我得出了当前的解决方案。这对我来说并不是一个真正合适的解决方案,但它确实有效。 3年多了,获取认证信息依然是个问题
我使用
cy.exec()
从系统中执行curl,该系统输出获取证书到期日期所需的信息。这里我使用了一个额外的命令来调用它。
要求:
我的命令.js
Cypress.Commands.add('checkCertificate', (url, daysBeforeWarning = 14) => {
const command = `curl ${url} -vI --stderr - | grep "expire date" | cut -d":" -f 2-`
cy.exec(command).then((result) => {
const expiryDate = result.stdout.trim()
const expiryTime = new Date(expiryDate).getTime()
const now = new Date().getTime()
const warningDate = now + (daysBeforeWarning * 24 * 60 * 60 * 1000)
cy.log(`Certificate expires on ${expiryDate}`)
expect(warningDate).to.be.lessThan(expiryTime, `certificate do not expires in less than ${daysBeforeWarning} days`)
})
})
在你的规范文件中你可以调用它:
it('check certificate', () => {
cy.checkCertificate('https://stackoverflow.com')
})
它对 url 执行额外的 https 请求并获取信息。虽然有点慢,但对我来说很有效。仍然感觉像是一个解决方法。
这样您就可以检查您需要什么信息(例如发行人)并从您的curl请求的标准输出中grep它。
希望 Cypress 将来能够以某种方式包含此类信息。
HTH.