Как определить, что загрузка не завершена / не выполняется? потому что я хочу закрыть веб-драйвер после завершения загрузки.

WebDriver: Chrome

Пример кода, подобный этому, предположим, что настройка драйвера Chrome готова.

@Test
public void testDownloadPdf(){
// here is the selenium java code to download pdf.
// when do i perform driver.close();
}
-1
Prashant Palve 20 Сен 2018 в 09:34

2 ответа

Лучший ответ

Я нашел это ... это работает в моем случае здесь я использую 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();
            }
        }
-1
Prashant Palve 21 Сен 2018 в 06:43

В общем, лучше закрыть драйвер в @AfterClass. Если вы знаете точное имя файла и ожидаемое местоположение, вы можете использовать Paths

String file_path_full = "C:\\users\\username\\downloads\\yourpdffile.pdf";
while(Files.notExists(Paths.get(file_path_full))) {Thread.sleep(10000);}
2
pburgr 20 Сен 2018 в 06:54