TestCafe firefox не работает, если страница загружается слишком долго - PullRequest
0 голосов
/ 25 мая 2020

Я новичок в тестировании пользовательского интерфейса и только начал изучать testCafe

Я пишу простой тест в testCafe, который go отправит в 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)

Есть ли лучший способ написать этот тест?

1 Ответ

2 голосов
/ 25 мая 2020

См. Код ниже:

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/")

});

Хорошей практикой является создание переменных для ваших селекторов, которые упрощают чтение. Также вместо того, чтобы нажимать кнопку отправки, All done нажимал клавишу ввода. Вы можете прочитать больше здесь

Вы также можете передать аргумент командной строки, чтобы немного замедлить тест. Вы также можете прочитать больше здесь

...