远程文件下载(Remote File Downloads)

2019-10-29 02:58发布

背景 :与量角器和Chrome的一些文件下载的测试工作。 我对硒电网运行,所以测试和我的节点ENV的服务器(例如上执行8.2.2.2 ),而该文件下载是一个远程的Windows机器(例如,在14.3.3.3 )。

所使用的文件下载到存储也拉开序幕测试在同一台服务器上,所以我只是在等待一个文件来执行我的说法,之前存在:

browser.wait(() => {
    return fs.existsSync(filePath)
}).then(() => {
    // expect something
})

问题:现在,文件不写入服务器(他们直接下载到浏览器),所以我没有什么可抢......至今。 由于我使用硒网格我不能直接从测试服务器读出的远程计算机。

问:请问量角器浏览器对象或chromedriver有关于我可以抢文件下载的任何信息? 试图找到一种方法来访问文件名和文件大小? 我挖到浏览器中的对象,但还没有发现任何东西。

Answer 1:

忘了这是从来没有回答,所以我会后我自己的解决方案后@Florent乙方在评论帮助了我。 我打破了这下来简单起见,该代码可能是更清洁的(也取决于你的使用情况):

it('generates a file', () => {
    // begin file download
    btnGenerateReport.click()
    .then(() => {
        // open a new window to leave current one in state
        return browser.executeScript('window.open()')
    })
    .then(() => {
        // switch to new window
        return browser.getAllWindowHandles().then((handles) => {
            return browser.switchTo().window(handles[1]);
        })
    })
    .then(() => {
        // navigate to downloads
        return browser.get('chrome://downloads')
    })
    .then(() => {
        // pauses tests until download has 1 item AND item status is 'Complete'
        return browser.wait(() => {
            return browser.executeScript('return downloads.Manager.get().items_.length > 0 && downloads.Manager.get().items_[0].state === "COMPLETE"');
        }, 600000, `"downloads.Manager.get().items_" did not have length > 0 and/or item[0].state did not === "COMPLETE" within ${600000/1000} seconds`)
    })
    .then(() => {
        // get downloads
        return browser.executeScript('return downloads.Manager.get().items_');
    }).then((items) => {
        // this is your download item(s)
        console.log(items);
    });
});


文章来源: Remote File Downloads