Google Chromeでファイルダウンロードのe2eテストを実行します。私はProtractor - Jasmine - Download file to a relative path、Protractor e2e test case for downloading pdf fileおよびSetting chromedriver preferences on protractor testsを含むいくつかの記事を参照し、私は満足していませんでした。分度器 - ダウンロードしたファイルを見つけることができません - Chromeでのダウンロードテスト
私の分度器の構成を簡単に見ていきます。
...
'os': 'Windows',
'os_version': '8.1',
'browserName': 'Chrome',
'version': '55',
'chromeOptions': {
args: ['--no-sandbox', '--test-type=browser'],
prefs: {
download: {
'prompt_for_download': false,
'directory_upgrade': true,
'default_directory': '/tmp'
}
}
}
...
これは私のテスト仕様です。
it('file download test',() => {
let filePath = path.resolve('/tmp/' + download-filename);
// unlink(filePath);
// click on a link by invoking anchor_element.click()
// at the moment, file download will be done on chrome
// with no prompt experienced
// wait until file has been downloaded,
// (in fact, download can be finished within a sec)
browser.wait(
() => fs.existsSync(filePath),
10000
).then(() => {
// and then expectations here
});
});
だから、私の場合のために、ファイルが正常にダウンロードされますが、chromeOptions
ファイルは'default_directory'
に指定されたディレクトリにダウンロードされないので、動作するようには思えません。
私は間違っていますか?私の場合は、chromeを使ってファイルをダウンロードする場所はどこですか?
私はBrowserStackを使用して、セレンサーバとローカルテストを実行しています。 そして、getMultiCapabilities
オプションを使用して複数の機能を備えた分度器を構成しています。
誰かが私にいくつかの重要なヒントを教えてくれることを願っています。
で
'default_directory': '/tmp'
を交換してください、あなたの答えのためのボブ、ありがとうございました。しかし、それはまだ動作しません。 '' tmp ''を' 'default_directory''オプションに与えると、どうなりますか?ダウンロードが完了した後、どこにファイルが保存されるのですか?だから、 'fs.existsSync(filePath)'で調べることができます。 – first87Windowsで '' default_directory ':' C:\\ Downloads''を実行している場合、これはうまくいくはずです –
私の質問で言及したように、テスト仕様が実行されるターゲットプラットフォームはWindows 8.1です。しかし私の仕事環境はUbuntuです(私は 'npm run test-e2e'のようにUbuntuでテストコマンドを実行します)。このような状況で、ファイルの存在をチェックしようとすると、 'fs.existsSync()'はWindowsではなく、Ubuntu上のファイルを検索します。これが実際の問題です。私は本当にあなたのコメントに感謝します。うまくいけば、あなたは私に背景の原則と、より多くのヒントを提供します。 – first87