Testing 单击下载链接并应用.wait(120000)将抛出错误

Testing 单击下载链接并应用.wait(120000)将抛出错误,testing,automated-tests,e2e-testing,web-testing,testcafe,Testing,Automated Tests,E2e Testing,Web Testing,Testcafe,我正在创建一个测试,它会转到一个特定的页面,然后单击按钮下载excel文件 文件托管在一个很远的位置。在开始下载之前,从主机服务器收集文件通常需要1.5分钟,而完全下载只需要2-3秒 从我点击submit按钮到开始下载之间的时间间隔为1.5分钟(如前所述) 我试着申请。等待(120000)-2分钟以确保安全 测试给出了一个错误(请参见下面的附图) 这是我的测试代码 test('R03', async t => { await t .click(Selector('[data-

我正在创建一个测试,它会转到一个特定的页面,然后单击按钮下载excel文件

文件托管在一个很远的位置。在开始下载之前,从主机服务器收集文件通常需要1.5分钟,而完全下载只需要2-3秒

从我点击submit按钮到开始下载之间的时间间隔为1.5分钟(如前所述)

我试着申请。等待(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),测试将完成并显示成功。
如有任何建议,将不胜感激。尝试获得窍门(testcafe)

作为一种解决方法,您可以使用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');
}
从“路径”导入{join};
从“fs”导入{existsSync};
从“testcafe”导入{t};
测试(“我的测试”,异步(t)=>{
等待
。单击(选择器('[data bind^=“css:{\\\'dx-state-disabled\\\\'])。查找('div')。使用文本('Year\\\'1'))
。单击(选择器('[data bind^=“css:{\\\'dx-state-disabled\\\\'])。查找('div')。使用文本('Location\'1'))
。单击(选择器('span')。使用文本('SUBMIT');
等待waitUntilFileIsDownloaded();
});
异步函数waitUntilFileIsDownloaded(){
const downloadsFolder=`${process.env.HOME}/Downloads`;
const expectedFile=join(下载文件夹'data.csv');
log(`waiting for file'${expectedFile}'…`);
对于(让索引=0;索引<120;索引++){
if(existsSync(expectedFile)){
log(`file downloaded after${index}seconds`);
返回;
}
等待t.等待(1000);
log(`waiting for'${index}'秒`);
}
console.log('文件未在适当时间下载');
}

我知道添加.wait(超时)会暂停测试,这不是我想要的。我只想让它等待并继续一段时间,然后再转到下一个测试。您好,感谢您提供的解决方案,看起来不错,但并不能解决我的问题。10-12秒后,我收到一个错误(我在问题中分享的屏幕截图)在指定的120秒后,我收到的错误与我在问题“未能在超时时间内完成对…的请求”中共享的错误相同。该问题可能与本地计算机的网络或防火墙设置、服务器中断或使服务器无法访问的网络问题有关任何帮助都将不胜感激。看起来这个问题与此有关。请参考它以了解更多详细信息。请随时添加评论,并在那里帮助我们确定建议的优先级。