TestCafe 如何重新加载实际页面
TestCafe how to reload actual page
有没有办法重新加载我在 TestCafe 中访问的实际测试页面,而不是 TestCafe 运行 所在的站点。我试过使用:
await t.eval(() => location.reload(true));
但这只是重新加载 TestCafe 使用的服务器页面。例如,如果我测试 www.google.com, the URL in the browser after I launch TestCafe will be something like http://172.16.0.152:58486/Qf6eMxOvA/https:/www.google.com/
那是当我执行上面的代码时重新加载的站点。有没有办法强制重新加载 www.google.com 以实际模拟重新加载测试页面?
await t.eval(() => location.reload(true));
你说得对,你应该使用上面提供的代码重新加载你的测试页。
请查看following example。该示例按预期工作:我们在页面重新加载后检查本地存储值。
test.js:
import { ClientFunction } from 'testcafe';
fixture `fixture`
.page `http://devexpress.github.io/testcafe/example`;
const getLocalStorageItem = ClientFunction(key => localStorage.getItem(key));
test('local storage', async t => {
await t.eval(() => localStorage.setItem('key', 'value'));
await t.expect(getLocalStorageItem('key')).eql('value');
await t.wait(2000);
await t.eval(() => location.reload(true));
await t.wait(2000);
await t.expect(getLocalStorageItem('key')).eql('value');
});
结果:
Running tests in:
- Chrome 74.0.3729 / Windows 10.0.0
fixture
√ local storage
1 passed (9s)
一般情况下请尽量避免 eval
和 wait
。请改用 Testcafe's ClientFunction。我在我的基页对象中使用了这样的东西:
async refresh () {
await ClientFunction(() => {
document.location.reload();
})();
}
然后在你的测试中,用类似 myPage.refresh()
的方式调用它
有没有办法重新加载我在 TestCafe 中访问的实际测试页面,而不是 TestCafe 运行 所在的站点。我试过使用:
await t.eval(() => location.reload(true));
但这只是重新加载 TestCafe 使用的服务器页面。例如,如果我测试 www.google.com, the URL in the browser after I launch TestCafe will be something like http://172.16.0.152:58486/Qf6eMxOvA/https:/www.google.com/ 那是当我执行上面的代码时重新加载的站点。有没有办法强制重新加载 www.google.com 以实际模拟重新加载测试页面?
await t.eval(() => location.reload(true));
你说得对,你应该使用上面提供的代码重新加载你的测试页。
请查看following example。该示例按预期工作:我们在页面重新加载后检查本地存储值。
test.js:
import { ClientFunction } from 'testcafe';
fixture `fixture`
.page `http://devexpress.github.io/testcafe/example`;
const getLocalStorageItem = ClientFunction(key => localStorage.getItem(key));
test('local storage', async t => {
await t.eval(() => localStorage.setItem('key', 'value'));
await t.expect(getLocalStorageItem('key')).eql('value');
await t.wait(2000);
await t.eval(() => location.reload(true));
await t.wait(2000);
await t.expect(getLocalStorageItem('key')).eql('value');
});
结果:
Running tests in:
- Chrome 74.0.3729 / Windows 10.0.0
fixture
√ local storage
1 passed (9s)
一般情况下请尽量避免 eval
和 wait
。请改用 Testcafe's ClientFunction。我在我的基页对象中使用了这样的东西:
async refresh () {
await ClientFunction(() => {
document.location.reload();
})();
}
然后在你的测试中,用类似 myPage.refresh()