无法从赛普拉斯的 html 正文中提取 CSRF 令牌
Posted
技术标签:
【中文标题】无法从赛普拉斯的 html 正文中提取 CSRF 令牌【英文标题】:Unable to extract CSRF token from html body in Cypress 【发布时间】:2019-12-12 03:06:11 【问题描述】:我无法从 Cypress 中的 html 解析 CSRF 令牌。 我正在关注这个链接:Logging in using CSRF Token in Cypress
尝试遵循上述链接中的 strategy #1,但我不断收到未定义的令牌。
这就是我的 html 的样子:
Return html looks like this
这就是我的代码的样子:
cy.request(
url: returnUrlFromLoginAPI,
followRedirect: false
)
.its('body')
.then((body) =>
const $html = Cypress.$(body)
const requestVerificationToken = $html.find("input[name=__RequestVerificationToken]").val()
console.log(requestVerificationToken)
)
)
【问题讨论】:
$html.find
真的返回结果吗?我尝试了同样的方法来查询元标记,但没有成功。
它确实对我有用。我能够通过 $html.find 找到该元素。
【参考方案1】:
.find
查找当前元素集的后代,而我的元标记是该集合的一部分,而不是后代。这就是为什么你应该使用.filter
,因为过滤器会寻找当前集合及其后代
【讨论】:
【参考方案2】:不确定“正确”的方式是什么,但我这样做了:
cy.get('[name=__RequestVerificationToken]').then($rvt =>
console.log($rvt.val());
【讨论】:
以上是关于无法从赛普拉斯的 html 正文中提取 CSRF 令牌的主要内容,如果未能解决你的问题,请参考以下文章
无法通过赛普拉斯加载我的 Azure 托管 Web 应用程序