我通过 chromewebdriver (windows) 使用 selenium 和 python 来自动执行从不同页面下载大量文件的任务。我的代码有效,但解决方案远非理想:下面的函数单击网站按钮,启动一个生成 PDF 文件然后下载它的 java 脚本函数。
我不得不使用静态等待以等待下载完成(丑陋)我无法检查文件系统以验证下载何时完成,因为我正在使用多线程(从不同页面下载大量文件一次)并且文件的名称是在网站本身动态生成的。
我的代码:
def file_download(num, drivervar):
Counter += 1
try:
drivervar.get(url[num])
download_button = WebDriverWait(drivervar, 20).until(EC.element_to_be_clickable((By.ID, 'download button ID')))
download_button.click()
time.sleep(10)
except TimeoutException: # Retry once
print('Timeout in thread number: ' + str(num) + ', retrying...')
.....
是否可以在 webdriver 中确定下载完成?我想避免使用 time.sleep(x)。
非常感谢。
原文由 BlackMamba 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以通过驱动程序访问
chrome://downloads/
来获取每个下载的状态。等待所有下载完成并列出所有路径:
已更新以支持版本 81 之前的更改。