javascript - 在 TestCafe 中,有没有办法获取由 USER ROLE 功能设置的令牌?
问题描述
介绍
我正在使用 TestCafe,我正在使用一些多余的步骤,可以通过直接调用 API 来轻松替换这些步骤,从而节省大量时间。此外,在我当前的测试中,我使用 TestCafe 的 UserRole 功能来避免在每个测试中登录。
有什么问题?
要进行 API 调用,我需要一个令牌。UserRole 已经将它保存在 cookie 中,但我找不到获取它的方法。
到目前为止我做了什么?
我进行了调试测试以查找 cookie,我看到浏览器中有一堆 cookie,但我看不到可以用作令牌的相关信息。
有一种方法可以让我使用这部分代码获取 cookie,当我不使用用户角色功能但无法成功使用以下用户角色功能时,我可以获取该 cookie:
const getCookie = ClientFunction((name) => {
const nameEQ = `${name}=`;
const ca = document.cookie.split(';');
for (let i = 0; i < ca.length; i += 1) {
let c = ca[i];
while (c.charAt(0) === ' ') c = c.substring(1, c.length);
if (c.indexOf(nameEQ) === 0) return c.substring(nameEQ.length, c.length);
}
return null;
});
但我需要知道 cookie 的名称,我不知道 TestCafe 是如何设置它的。
解决方案
通常,身份验证 cookie 具有httpOnly属性。这意味着您无法从客户端访问此类 cookie。TestCafe 重复本机浏览器行为并限制httpOnly
从ClientFunction
. 此外,目前还没有公共 API 可以httpOnly
在测试代码中使用 cookie。请注意,TestCafe 团队不建议您手动设置 cookie。这可能会导致不稳定的测试。
推荐阅读
- amazon-web-services - 获取 Amazon Redshift 存储过程中 UNLOADed 记录的计数
- javascript - JavaScript 函数在 JsFiddle 中有效,但在 ASP.NET 部分视图中无效
- git - 修复新手 git 错误
- arrays - Algorithm for Number series row and column
- ios - Swift 5 & CloudKit: recordFetchedBlock does not work on real device
- javascript - Create a google map using a class not an ID
- javascript - Rendering lots of canvas elements with react-konva
- javascript - JavaScript DOM not getting pre assigned CSS properties
- google-cloud-functions - Google Cloud Function :: Service account :: JWT token and Bearer token
- amazon-web-services - On delete move S3 bucket objects to Glacier bucket using lifecycle rules defined in Cloudformation