5

我正在使用 selenium webdriver 使用 firefox 进行一些下载。目前,我的脚本在下载启动后等待特定时间,然后关闭 Firefox。我想知道是否有办法将firefox配置为在下载完成时自动关闭?或者使用 selenium webdriver,我可以检查下载是否已完成?我不想使用任何附加组件,因为它可能会在我的脚本中添加依赖项。我不能使用 wget/curl 等来下载文件。提前致谢

4

3 回答 3

2

伊格纳西奥·孔特雷拉斯所说的。轮询下载路径可能是最好的(最强大的)解决方案。

替代#1:

使用FirefoxProfile带有下载状态栏的插件。它有一个方便的选项“在窗口关闭后在下载管理器中继续下载”(或类似的东西),这样它就会让 Firefox 在后台运行,直到下载完成。

备选方案 #2:

如果可以的话,直接使用这个(或任何其他类似的 WebDriver-friendly 工具)下载文件……或者这个。这将完全将 Firefox 排除在进程之外。

于 2012-05-23T09:10:18.280 回答
2

您可以使用 Selenium WebDriver API 的 WebDriverWait 类使用以下代码进行轮询:

       (new WebDriverWait(driver, 180, 10)).until(new ExpectedCondition<Boolean>() {
            public Boolean apply(WebDriver d) {
                return !downloadedFilePart.exists();
            }
         });

上面的代码检查具有 .part 扩展名的文件,程序每 10 秒下载一次,直到下载完成或 3 分钟后超时。

于 2012-10-30T23:08:54.620 回答
1

我不确定这是否可行,但您是否考虑过通过 Firefox 探索下载位置?轮询它,直到您看到下载已完成。

如果我没记错的话,当文件被下载时,应该有一个扩展名为 .part 的额外文件。

像这样的东西(伪代码):

...

WebDriver poller = new FirefoxDriver()
poller.get("path to download folder");

while ("file with .part extension is present") {
    // Wait/sleep some time
    // Refresh poller
}

// close downloading firefox instance
firefox.quit();
// close the polling instance
poller.quit();

希望能帮助到你

于 2012-05-23T08:01:59.207 回答