logging - RequestLogger 没有拦截所有的 http 请求
问题描述
我正在尝试测试此页面http://prebid.org/
我想知道该图像http://vcdn.adnxs.com/p/creative-image/27/c0/52/67/27c05267-5a6d-4874-834e-18e218493c32.png
是否已加载。
因此我创建了一个记录器并检查记录器的计数,但它没有记录这个请求。
我创建了自定义记录器,但它仍然没有记录。我假设它只拦截发起者是页面本身的请求。因此,如果任何第三方 js 发起的请求都不会被记录。
有什么办法可以实现吗?
解决方案
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)
推荐阅读
- react-native - ReactNative 错误:元素类型无效:应为字符串或类/函数,但得到:未定义
- reactjs - next-redux-wrapper TypeError: nextCallback is not a function error in wrapper.getServerSideProps
- java - JavaFX 应用程序在嵌入 gif 的场景在慢速系统中启动之前显示了几分之一秒的空白阶段?
- spring - DispatcherServlet 和控制器(Tomcat 状态 500)
- jenkins - 如何将参数传递给 Jenkins DSL 内联 shell 脚本?
- d3.js - d3.JS 工具提示不会像预期的那样在鼠标移出时隐藏,而是在鼠标悬停时复制而不是移动
- c++ - 如何为某个任意数组专门化一个函数模板?
- python - 使用 driver.find_elements_by 返回不是元素 ID 的东西
- vue.js - 在 Vue 3 中,VUEX 4 突变无法访问 this._vm。如何解决?
- google-analytics - 跟踪国际化网站的最正确方法?