小编Bla*_*mba的帖子

Selenium(Python) - 等待下载过程使用Chrome网络驱动程序完成

我通过chromewebdriver(windows)使用selenium和python,以便自动执行从不同页面下载大量文件的任务.我的代码有效,但解决方案远非理想:下面的函数点击启动java脚本函数的网站按钮,生成PDF文件然后下载它.

我不得不使用一个静态等待,以等待下载完成(丑陋的),我不能为了验证检查文件系统时,下载完成,因为我使用多线程(下载来自不同页面的文件很多的一次)并且文件的名称也是在网站本身动态生成的.

我的代码:

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...')
..... 
Run Code Online (Sandbox Code Playgroud)

是否可以在webdriver中确定下载完成?我想避免使用time.sleep(x).

非常感谢.

selenium python-3.x selenium-chromedriver

9
推荐指数
4
解决办法
9102
查看次数