首页 > 解决方案 > RequestLogger 没有拦截所有的 http 请求

问题描述

我正在尝试测试此页面http://prebid.org/ 我想知道该图像http://vcdn.adnxs.com/p/creative-image/27/c0/52/67/27c05267-5a6d-4874-834e-18e218493c32.png是否已加载。

因此我创建了一个记录器并检查记录器的计数,但它没有记录这个请求。

我创建了自定义记录器,但它仍然没有记录。我假设它只拦截发起者是页面本身的请求。因此,如果任何第三方 js 发起的请求都不会被记录。

有什么办法可以实现吗?

标签: loggingautomated-testshttprequeste2e-testingtestcafe

解决方案


TestCafe 基于testcafe-hammerhead代理。

所有请求都通过此代理,这会导致加载页面延迟。http://prebid.org/对“Adserver”/“bids”使用超时,所以在第一次加载时,我们会看到“All Biders Take Too Long or No Bid”服务器响应。

单击“刷新此广告”按钮有助于解决此问题,因为重复请求会更快。

test-prebid.js:

import { Selector, RequestLogger } from 'testcafe';

const logger     = RequestLogger('http://vcdn.adnxs.com/p/creative-image/27/c0/52/67/27c05267-5a6d-4874-834e-18e218493c32.png');
const refreshBtn = Selector('a').withText('Refresh this ad');

fixture('Prebid')
    .page(`http://prebid.org/`);

test
    .requestHooks(logger)
    (`image loading`, async (t) => {
        await t
            .click(refreshBtn)
            .expect(logger.contains(record => record.response.statusCode === 200)).ok();
    });

测试结果:

> d:\Prebid>testcafe chrome,edge,ie test-prebid.js -e

Using locally installed version of TestCafe.
 Running tests in:
 - Chrome 69.0.3497 / Windows 10.0.0
 - Edge 17.17134.0 / Windows 10.0.0
 - IE 11.0.0 / Windows 10.0.0

 Prebid
 √ image loading

 1 passed (11s)

注意:http ://devexpress.github.io/testcafe/documentation/using-testcafe/command-line-interface.html#-e---skip-js-errors


推荐阅读