You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Cypress抓取邮件正文提取链接并通过cy.visit访问

Cypress 邮件确认链接提取实现方案

核心思路

我们可以通过两种稳定的方式提取带动态token的确认链接:

  • 正则匹配:根据链接固定的前缀特征,直接从HTML字符串中匹配出完整链接
  • DOM解析:将邮件HTML字符串转为可操作的DOM对象,直接提取a标签的href属性,稳定性更高

具体实现代码

你只需要将代码中的TODO部分替换为对应逻辑即可,以下提供两种可选实现:

方案1:正则匹配(写法简单,适合链接前缀固定场景)

// TODO 部分替换为以下代码
// 匹配规则可根据你的实际链接前缀调整
const confirmLinkReg = /http:\/\/www\.company\.com\/ls\/click\?upn=[^"]+/
const linkMatchResult = body.match(confirmLinkReg)

// 断言链接存在
assert.isNotNull(linkMatchResult, "邮件正文中未找到符合规则的确认链接")
const confirmLink = linkMatchResult[0]

cy.log(`提取到的确认链接:${confirmLink}`)
// 访问确认链接
cy.visit(confirmLink)

方案2:DOM解析(稳定性更高,适合HTML结构固定场景)

// TODO 部分替换为以下代码
// 解析HTML字符串为DOM对象
const htmlDoc = new DOMParser().parseFromString(body, 'text/html')
// 根据href特征选中确认链接a标签,选择器可根据实际情况调整
const confirmLink = htmlDoc.querySelector('a[href*="ls/click?upn="]')?.href

// 断言链接存在
assert.isNotEmpty(confirmLink, "邮件正文中未找到符合规则的确认链接")

cy.log(`提取到的确认链接:${confirmLink}`)
// 访问确认链接
cy.visit(confirmLink)

注意事项

  • 如果后续链接的前缀、路径有调整,只需要对应修改正则的匹配规则,或者a标签的选择器即可
  • 所有操作都在cy.task的then回调中执行即可,不需要额外存储到全局变量,避免Cypress异步逻辑导致的变量取值异常

内容的提问来源于stack exchange,提问作者Tomas Nemeth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 11:54:02