下载完成后自动关闭firefox

时间:2012-05-23 06:46:09

标签: firefox selenium download webdriver

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

3 个答案:

答案 0 :(得分:2)

Ignacio Contreras说的话。轮询下载路径可能是最好的(最强大的)解决方案。

备选方案#1:

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

备选方案#2:

使用this(或任何其他类似的WebDriver友好工具)直接下载文件...或this,如果可以的话。这将完全切断Firefox的流程。

答案 1 :(得分: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分钟后超时。

答案 2 :(得分: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();

希望有所帮助