javascript - 如何禁用 TestCafe cookie 处理机制以允许默认浏览器 document.cookie 列表?
问题描述
我有一个业务需求来提取在我的测试过程中生成的所有 cookie。
但是我遇到了与此处讨论的类似问题,因为 TestCafe 使用自己的 cookie 处理机制。在我登录测试结束时document.cookie
,我没有得到与手动完成测试旅程时相同的完整列表。通过 TestCafe 代理浏览器运行时,预期的 30 个 cookie 中至少有一半不存在。
我可以暂时禁用 TestCafe 的 cookie 处理机制来满足我的要求吗?
干杯
解决方案
无法禁用 TestCafe cookie 处理机制。但是,如果您需要收集随请求发送的所有 cookie,则可以使用请求记录器从请求标头中获取 cookie,如下例所示:
import _ from "lodash";
import { ClientFunction, RequestLogger, Selector } from "testcafe";
const logger = RequestLogger(/.*/, { logRequestHeaders: true });
const setCookie = ClientFunction(() => { document.cookie = 'foo=bar'; });
fixture `Cookie Test`
.page('bing.com')
.requestHooks(logger);
test('Send cookie', async t => {
await setCookie();
await t.click(Selector('#sb_go_par'));
const cookies =
_.uniq(
_.flatMap(
_.filter(
_.map(
_.flatMap(
logger.requests,
item => item.request.headers
),
headers => headers.cookie
)
),
cookies => cookies.split('; ')
)
);
console.log(cookies);
await t.expect(cookies).contains('foo=bar');
});
另外,请注意,document.cookie
不会显示仅 HTTP cookie 和其他域的 cookie,虽然它们通过 DevTools 可见,并且 TestCafe 每次都在清晰的环境中运行测试。因此,如果您手动运行测试场景来比较结果,则需要在隐身模式下进行;否则,您可能会从以前的会话中获得额外的 cookie。
推荐阅读
- javascript - 创建用户文件上传按钮时,如何选择要上传文件的文件夹?
- c++ - 16位系统中的程序如何访问超过65535但不能访问地址的整数
- c++ - 在同一头文件中定义的对模板运算符的未定义引用
- javascript - 如何防止幻灯片的 figcaption 在每个图像加载时上下跳跃?
- python - python - regex replace everything between 2 strings only in the first occourence of a character
- javascript - CHM 查看器禁止在 Windows 10 上访问 JavaScript 中的“窗口”对象
- apache-kafka - Kafka连接消费者引用偏移量并存储在消息中
- c - 这种对信号的解释是否正确?
- python-3.x - selenium.common.exceptions.ElementNotInteractableException:消息:元素不可交互(会话信息:chrome=81.0.4044.138)
- c - 在 C 中将节点添加到链表的末尾会导致堆栈转储