Jenkins-Slaveを使用してSeleniumGuiテストを実行します。スレーブはWebStartを使用して開始され、Windows7マシンで実行されます。このテストには、PDFファイルのダウンロードが含まれています。PDFファイルの存在と、その中のテキストを検索して正確性を確認する必要があります。問題は、実行中のSeleniumテストで、Firefoxによってダウンロードされたファイルが表示されないことです。実際、プロセスはディレクトリ内のファイルを認識していないようです。
JenkinsやWebStartをまったく使用せずに、IDEから直接、ローカルマシンでテストを実行すると、テストは問題なく実行されます。
私はすでに次のことを考えました:
- 間違ったディレクトリをチェックしていますか?
file.getAbsolutePath()
いいえ、 Windowsエクスプローラーにコピーしてファイルを表示できます。また、私は正しいマシンを使用していると確信しています。 タイミングの問題ですか?たとえば、ファイルのダウンロードが完了していませんか?いいえ、WebDriverWaitを使用して、ファイルが見つかるまで30秒待ちますが、PDFの作成とダウンロードには実際には1秒ほどかかります。
WebDriverWait wait = new WebDriverWait(driver, 30, 1000); wait.until(new Predicate<WebDriver>(){ public boolean apply(WebDriver driver){ try{ log.info("file: " + pdfFile.getAbsolutePath() + ", exists: " + pdfFile.exists() + ", size: " + pdfFile.length()); // test files content ... } catch (IOException e){ return false; } } });
誰かが何が間違っている可能性があるか考えていますか?ワイルドな推測は大歓迎です...
更新 jenkins.jnlpファイルを確認しましたが、「all-permissons」が含まれているため、ファイルシステムにアクセスできるはずです。
<security>
<all-permissions/>
</security>
UPDATE 2 それを明確にするために:私はJenkinsを使用してSeleniumテストを実行します。SeleniumはFirefoxをリモートコントロールし、その間にPDFファイルがダウンロードされます。問題は、Javaプロセスです。たとえば、私のテストクラスはファイルを見つけることができません。