我正在使用selenium webdriver使用firefox进行一些下载。目前,我的脚本在下载启动后等待特定时间,然后关闭Firefox。我想知道是否有办法配置firefox自动关闭下载完成?或者使用selenium webdriver,我可以检查下载是否已完成?我不想使用任何添加,因为它可能会在我的脚本中添加依赖项。我不能使用wget / curl等来下载文件。 提前致谢
答案 0 :(得分:2)
Ignacio Contreras说的话。轮询下载路径可能是最好的(最强大的)解决方案。
备选方案#1:
将FirefoxProfile
与Download 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();
希望有所帮助