我在TestCafe中进行了以下测试:
import { Selector } from 'testcafe';
const TEST_URL = process.env.TEST_URL;
fixture('/').page(`${TEST_URL}/`);
test(`users should be able to view the '/' page`, async (t) => {
await t
.navigateTo(TEST_URL)
.expect(Selector('H1').withText('All Users').exists).ok()
});
此测试失败:
/
✖ users should be able to view the '/' page
1) AssertionError: expected false to be truthy
Browser: Chrome 59.0.3071 / Mac OS X 10.12.5
5 |fixture('/').page(`${TEST_URL}/`);
6 |
7 |test(`users should be able to view the '/' page`, async (t) => {
8 | await t
9 | .navigateTo(TEST_URL)
> 10 | .expect(Selector('H1').withText('All Users').exists).ok()
11 |});
12 |
问题是该页面没有完全加载,并且没有h1标记(由React组件呈现)但我不知道如何告诉TestCafe等待页面加载。
我试过了:
import { Selector } from 'testcafe';
const TEST_URL = process.env.TEST_URL;
fixture('/').page(`${TEST_URL}/`);
test(`users should be able to view the '/' page`, async (t) => {
await t.expect(Selector('H1').withText('All Users').exists).ok()
});
哪个有效,但我需要一些测试来使用navigateTo所以我想知道要改变什么,以便使用navigateTo的测试版本也可以。
我试图为每一行设置等待:
import { Selector } from 'testcafe';
const TEST_URL = process.env.TEST_URL;
fixture('/').page(`${TEST_URL}/`);
test(`users should be able to view the '/' page`, async (t) => {
await t.navigateTo(TEST_URL)
await t.expect(Selector('H1').withText('All Users').exists).ok()
});
但错误相同。
答案 0 :(得分:3)
问题出在TEST_URL
变量中。如果它包含裸IP地址(例如,'xxx.xx.x.xxx'
),navigateTo
会将浏览器重定向到'http://xxx.xx.x.xxx/xxx.xx.x.xxx'
,因为navigateTo
操作会将此字符串视为相对路径。
要解决此问题,请在TEST_URL
字符串中包含协议,例如'http://xxx.xx.x.xxx'
。