【问题标题】:Cannot intercept outgoing AJAX request from page using Testcafe无法使用 Testcafe 拦截来自页面的传出 AJAX 请求
【发布时间】:2019-01-25 04:45:11
【问题描述】:

我正在尝试将 TestCafe 用于客户端 javascript 库,但我无法通过计数机制在测试页面的负载上捕获任何传出的 AJAX 请求。

我的尝试涉及使用该库中的RequestLogger 对象,涉及使用正则表达式/\.org/ 设置第一个参数,以捕获使用.org 后缀的任何传出图块请求。我相信这是有道理的,因为所有传出请求都会发送到 openstreetmap.org,目的是获取 png 地图图块。

我的测试核心如下所示:

import { RequestLogger } from "testcafe";

fixture`Hello World - Leaflet`.page`http://localhost:8080`;

const logger = RequestLogger(/org/, {
  logRequestHeaders: true,
  logResponseHeaders: true
});

test("Test if there's an outgoing network request...", async t => {
  // Do something...
  await t
    .wait(5000)
    .expect(logger.count(() => true))
    .gt(0, "Must detect more than zero outgoing requests to openstreetmap");
});

为了捕获正确的 AJAX 请求传出计数,我是否遗漏了什么?

如果有帮助,我已经创建了一个包含此问题的存储库,并以人们无需配置即可尝试解决的方式进行设置:

【问题讨论】:

    标签: javascript request automated-tests e2e-testing testcafe


    【解决方案1】:

    感谢您的详细描述。

    您需要将attach logger 发送至您的test/fixture。您还可以在测试运行期间使用t.addRequestHookst.removeRequestHooks 方法附加和分离挂钩。

    在测试代码中,我将logger钩子附加到test

    import { RequestLogger } from "testcafe";
    
    fixture`Hello World - Leaflet`.page`http://localhost:8080`;
    
    const logger = RequestLogger(/org/);
    
    test
        .requestHooks(logger)
        ("Test if there's an outgoing network request...", async t => {
            await t
                .wait(5000)
                .expect(logger.count(() => true))
                .gt(0, "Must detect more than zero outgoing requests to openstreetmap");
        });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-24
      • 1970-01-01
      • 2022-11-10
      • 2017-02-09
      • 2021-08-07
      • 1970-01-01
      相关资源
      最近更新 更多