我正在试图弄清楚如何使webdriver.io等到单击按钮后所有ajax请求都完成。
不幸的是,document.readyState总是='完整',并且网页没有任何“独特”,除了它有一些略有不同的数据。
还有其他方法我可以测试一下javascript函数是否在页面中完成..?
await this.browser.waitUntil(function () {
return this.execute(function () {
if (document.readyState === 'complete')
return true;
})
});
答案 0 :(得分:0)
在 WDIO 5.x 及更高版本中,引入了一个名为“拦截服务”的新第三方插件来帮助解决此问题。
您需要安装服务包 wdio-intercept-service
作为开发依赖项,并在 wdio.config.js 中将其声明为 services: ['intercept']
您可以设置拦截器来捕获 xhr 请求,如下所示。
browser.setupInterceptor(); // start capturing xhr requests
拦截器设置完成后,您可以声明对请求的一些期望,并使用它们的索引(期望声明的顺序)获取这些请求。
browser.expectRequest('GET', '/api/foo', 200); // expect GET request to /api/foo with 200 statusCode
var request = browser.getRequest(0);
assert.equal(request.method, 'GET');
assert.equal(request.response.headers['content-length'], '42');
您可以在他们的 Github 页面上找到更多信息:Intercept Service