背景 :与量角器和Chrome的一些文件下载的测试工作。 我对硒电网运行,所以测试和我的节点ENV的服务器(例如上执行8.2.2.2
),而该文件下载是一个远程的Windows机器(例如,在14.3.3.3
)。
所使用的文件下载到存储也拉开序幕测试在同一台服务器上,所以我只是在等待一个文件来执行我的说法,之前存在:
browser.wait(() => {
return fs.existsSync(filePath)
}).then(() => {
// expect something
})
问题:现在,文件不写入服务器(他们直接下载到浏览器),所以我没有什么可抢......至今。 由于我使用硒网格我不能直接从测试服务器读出的远程计算机。
问:请问量角器浏览器对象或chromedriver有关于我可以抢文件下载的任何信息? 试图找到一种方法来访问文件名和文件大小? 我挖到浏览器中的对象,但还没有发现任何东西。
忘了这是从来没有回答,所以我会后我自己的解决方案后@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);
});
});