当页面加载时间过长时,TestCafe firefox 失败
TestCafe firefox fails when page load takes too long
我对 UI 测试还很陌生,刚开始探索 testCafe
我正在 testCafe 中编写一个简单的测试,它将转到 google,搜索 testCafe,单击提交按钮,然后单击出现的第一个搜索结果并验证它是否是 testCafe 页面:
import {Selector} from 'testcafe';
import {ClientFunction} from 'testcafe';
const getURL = ClientFunction(()=> window.location.href);
fixture `Getting Started`
.page `https://www.google.com/`;
test('Google Search test', async t =>{
await t
.typeText('input[name="q"]','testcafe')
.click('input[type="submit"]')
.click('div.r > a')
.expect(getURL()).eql("https://devexpress.github.io/testcafe/documentation/getting-started/")
})
此测试与 Chrome 和 Safari 完美配合,但是 Firefox 加载 google 主页的时间太长,而且它无法找到 input[type="submit"]
按钮.因此测试失败。在我看来,测试甚至在 pageLoad 完成之前就开始执行。
这是 Firefox 中出现的错误:
1) The element that matches the specified selector is not visible.
Browser: Firefox 75.0 / macOS 10.14
7 | .page `https://www.google.com/`;
8 |
9 |test('Google Search test', async t =>{
10 | await t
11 | .typeText('input[name="q"]','testcafe')
> 12 | .click('input[type="submit"]')
13 | .click('div.r > a')
14 | .expect(getURL()).eql("https://devexpress.github.io/testcafe/documentation/getting-started/")
15 |
16 |})
at <anonymous> (/Users/goplap/TestCafeTest/tests/sampleTest.js:12:6)
at <anonymous> (/Users/goplap/TestCafeTest/tests/sampleTest.js:9:1)
at <anonymous> (/Users/goplap/TestCafeTest/node_modules/testcafe/src/api/wrap-test-function.js:17:28)
at TestRun._executeTestFn (/Users/goplap/TestCafeTest/node_modules/testcafe/src/test-run/index.js:295:19)
at TestRun.start (/Users/goplap/TestCafeTest/node_modules/testcafe/src/test-run/index.js:345:24)
1/1 failed (18s)
有没有更好的方法来编写这个测试?
查看下面的代码:
import {Selector} from 'testcafe';
import {ClientFunction} from 'testcafe';
const getURL = ClientFunction(()=> window.location.href);
fixture `Getting Started`
.page `https://www.google.com/`;
test('Google Search test', async t =>{
const inputBox = Selector('input[name="q"]');
const anchorLinks = Selector(".l");
const gettingStartedText = "Getting Started";
await t
.typeText(inputBox,'testcafe')
.pressKey('enter')
.click(anchorLinks.withText(gettingStartedText))
.expect(getURL()).eql("https://devexpress.github.io/testcafe/documentation/getting-started/")
});
为您的选择器创建变量是一种很好的做法,这样更容易阅读。此外,不是点击提交按钮,而是点击回车键。您可以阅读更多 here
您还可以传入一个命令行参数来稍微减慢测试速度。您可以阅读更多 here as well
我对 UI 测试还很陌生,刚开始探索 testCafe
我正在 testCafe 中编写一个简单的测试,它将转到 google,搜索 testCafe,单击提交按钮,然后单击出现的第一个搜索结果并验证它是否是 testCafe 页面:
import {Selector} from 'testcafe';
import {ClientFunction} from 'testcafe';
const getURL = ClientFunction(()=> window.location.href);
fixture `Getting Started`
.page `https://www.google.com/`;
test('Google Search test', async t =>{
await t
.typeText('input[name="q"]','testcafe')
.click('input[type="submit"]')
.click('div.r > a')
.expect(getURL()).eql("https://devexpress.github.io/testcafe/documentation/getting-started/")
})
此测试与 Chrome 和 Safari 完美配合,但是 Firefox 加载 google 主页的时间太长,而且它无法找到 input[type="submit"]
按钮.因此测试失败。在我看来,测试甚至在 pageLoad 完成之前就开始执行。
这是 Firefox 中出现的错误:
1) The element that matches the specified selector is not visible.
Browser: Firefox 75.0 / macOS 10.14
7 | .page `https://www.google.com/`;
8 |
9 |test('Google Search test', async t =>{
10 | await t
11 | .typeText('input[name="q"]','testcafe')
> 12 | .click('input[type="submit"]')
13 | .click('div.r > a')
14 | .expect(getURL()).eql("https://devexpress.github.io/testcafe/documentation/getting-started/")
15 |
16 |})
at <anonymous> (/Users/goplap/TestCafeTest/tests/sampleTest.js:12:6)
at <anonymous> (/Users/goplap/TestCafeTest/tests/sampleTest.js:9:1)
at <anonymous> (/Users/goplap/TestCafeTest/node_modules/testcafe/src/api/wrap-test-function.js:17:28)
at TestRun._executeTestFn (/Users/goplap/TestCafeTest/node_modules/testcafe/src/test-run/index.js:295:19)
at TestRun.start (/Users/goplap/TestCafeTest/node_modules/testcafe/src/test-run/index.js:345:24)
1/1 failed (18s)
有没有更好的方法来编写这个测试?
查看下面的代码:
import {Selector} from 'testcafe';
import {ClientFunction} from 'testcafe';
const getURL = ClientFunction(()=> window.location.href);
fixture `Getting Started`
.page `https://www.google.com/`;
test('Google Search test', async t =>{
const inputBox = Selector('input[name="q"]');
const anchorLinks = Selector(".l");
const gettingStartedText = "Getting Started";
await t
.typeText(inputBox,'testcafe')
.pressKey('enter')
.click(anchorLinks.withText(gettingStartedText))
.expect(getURL()).eql("https://devexpress.github.io/testcafe/documentation/getting-started/")
});
为您的选择器创建变量是一种很好的做法,这样更容易阅读。此外,不是点击提交按钮,而是点击回车键。您可以阅读更多 here
您还可以传入一个命令行参数来稍微减慢测试速度。您可以阅读更多 here as well