如何使用Selenium Java识别Chrome中正在进行的下载?

时间:2018-09-20 06:34:03

标签: java selenium selenium-webdriver

我如何确定下载未完成/正在进行中?因为我想在下载完成后关闭Web驱动程序。

WebDriver: Chrome

这样的示例代码,假设chrome驱动程序设置已准备就绪。

@Test
public void testDownloadPdf(){
// here is the selenium java code to download pdf.
// when do i perform driver.close();
}

2 个答案:

答案 0 :(得分:2)

通常,最好关闭@AfterClass中的驱动程序。 如果您知道确切的文件名和预期位置,则可以使用Paths

String file_path_full = "C:\\users\\username\\downloads\\yourpdffile.pdf";
while(Files.notExists(Paths.get(file_path_full))) {Thread.sleep(10000);}

答案 1 :(得分:-1)

我发现了这个...对我来说很有效 在这里,我使用的是FileUtils.sizeOfDirectory(downloadfolder),它将返回目录的大小,并每隔5秒检查一次大小是否相等。如果文件大小相等,则下载完成。

private void waitForDownloadFinished() throws Exception {
            try {
                String path = "/Download/path/";
                if (path != null) {
                    File folder = new File(path);
                    long size, reSize;
                    do {
                        size = FileUtils.sizeOfDirectory(folder);
                        Thread.sleep(5000);
                        reSize = FileUtils.sizeOfDirectory(folder);
                    } while (size != reSize);
                    System.out.println("Download completed");
                }           
} catch (Exception e) {
                e.printStackTrace();
                throw e;
            } finally {
                getWebBrowser().quit();
            }
        }