Щелчок по ссылке для загрузки и применение .wait (120000) вызывает ошибку.

Я создаю тест, в котором он переходит на определенную страницу и нажимает кнопку, которая загружает файл Excel.

Файл размещен в удаленном месте, обычно требуется 1,5 минуты, чтобы собрать его с хост-сервера до начала загрузки, что занимает всего 2-3 секунды, чтобы загрузить его полностью.

С момента, когда я нажимаю кнопку отправки и до момента начала загрузки, есть промежуток в 1,5 минуты (как упоминалось ранее).

Я попробовал применить .wait (120000) - 2 минуты на всякий случай.

Тест выдает ошибку (см. Прикрепленное изображение ниже).

Снимок экрана с ошибкой

Это мой тестовый код.

test('R03', async t => {
await t  
    .click(Selector('[data-bind^="css:{ \\\'dx-state-disabled\\\'].find('div').withText('Year_1'))
    .click(Selector('[data-bind^="css:{ \\\'dx-state-disabled\\\'].find('div').withText('Location_1'))
    .click(Selector('span').withText('SUBMIT'))
    .wait(120000); // in ms
});

Отладка теста показала мне следующую ошибку:

 × R03

   1) Failed to complete a request to

   "http://example.com/Reports/ViewerPartial/DXXRDV.axd?actionKey=exportTo&arg=%7B%22documentId%22%3A%227c93875b0e0247e391d50759c00ef3a7%22%2C%22exportOptions%22%3A%22%7B%5C%22Html%5C%22%3A%7B%5C%22%40EmbedImagesInHTML%5C%22%3A%5C%22true%5C%22%7D%7D%22%2C%22format%22%3A%22xlsx%22%7D"
      within the timeout period. The problem may be related to local 
      machine's network or firewall settings, server outage, or network 
      problems that make the server inaccessible.

Я скрыл доменное имя, изменив его на example.com по причинам компании.
Если я удалил .wait (120000), тест будет завершен и будет показан успешно. Любое предложение будет оценено. Пытаюсь разобраться в этом (тесткафе)


person Ayush Singhania    schedule 08.03.2019    source источник
comment
Я понимаю, что добавление .wait (тайм-аут) приостанавливает тест, чего я не хочу. Я просто хочу, чтобы он подождал и продолжал какое-то время, прежде чем перейти к следующему.   -  person Ayush Singhania    schedule 08.03.2019


Ответы (1)


В качестве обходного пути вы можете дождаться прибытия файла в папку загрузки, используя цикл for:

import { join } from 'path';
import { existsSync } from 'fs';
import {t} from 'testcafe';

test("My Test", async (t) => {
    await t  
    .click(Selector('[data-bind^="css:{ \\\'dx-state- disabled\\\'].find('div').withText('Year_1'))
    .click(Selector('[data-bind^="css:{ \\\'dx-state-disabled\\\'].find('div').withText('Location_1'))
    .click(Selector('span').withText('SUBMIT'));

   await waitUntilFileIsDownloaded();
});

async function waitUntilFileIsDownloaded(){
    const downloadsFolder= `${process.env.HOME}/Downloads`;
    const expectedFile = join(downloadsFolder, 'data.csv');
    console.log(`waiting for file '${expectedFile}' ...`);
    for (let index = 0; index < 120; index++) {
        if (existsSync(expectedFile)) {
            console.log(`file downloaded after ${index} seconds`);
            return;
        }
        await t.wait(1000);
        console.log(`waiting for '${index}' seconds`);
    }
    console.log('File has not been downloaded in due time');
}
person hdorgeval    schedule 08.03.2019
comment
Привет, спасибо за решение, выглядит хорошо, но не решает мою проблему. Через 10-12 секунд я получаю сообщение об ошибке (снимок экрана, которым я поделился в своем вопросе), а после назначенного времени в 120 секунд я получаю ту же ошибку, что и тот, который я поделился в своем вопросе. Не удалось выполнить запрос на .... ..в период тайм-аута. Проблема может быть связана с настройками сети или брандмауэра локальной машины, сбоями сервера или проблемами сети, которые делают сервер недоступным. Любая помощь будет оценена по достоинству. - person Ayush Singhania; 11.03.2019
comment
Похоже, проблема связана с github.com/DevExpress/testcafe/issues/2940 Пожалуйста, обратитесь к нему для получения более подробной информации. Не стесняйтесь добавлять комментарии и лайки, чтобы помочь нам расставить приоритеты. - person Alex Kamaev; 11.03.2019