有时需要下载多个文件,但是不想保存在同一个目录下,需要做两步

  1. selenium设置浏览器默认下载路径,这个路径需要是个不存在的路径
  2. 操作文件另存为弹框

    文章目录

    • selenium设置浏览器默认下载路径
    • 操作文件另存为弹框

selenium设置浏览器默认下载路径

selenium设置浏览器默认下载路径,这个路径需要是个不存在的路径

options = webdriver.ChromeOptions()prefs={"download.default_directory":"D:/a/b/c" # todo我电脑里不存在这个路径}options.add_experimental_option('prefs',prefs)driver= webdriver.Chrome(executable_path="???",options=options)

操作文件另存为弹框

由于上面设置的路径不存在,每次下载文件的时候,电脑都会弹出文件另存为弹框,此时可以操作这个窗口保存文件到不同路径

import win32guiimport win32cnwin = win32gui.FindWindow('#32700',u'另存为')edit= win32gui.FindWindow(win,0,'DUIViewWndClassName',None)edit= win32gui.FindWindow(edit,0,'DirectUIHWND',None)edit= win32gui.FindWindow(edit,0,'FloatNotifySink',None)edit= win32gui.FindWindow(edit,0,'ComboBox',None)edit= win32gui.FindWindow(edit,0,'Edit',None)win32gui.SendMessage(edit,win32con.WM_SETTEXT,None,"D:\\a.txt" # 注意路径需要带文件名) save = win32gui.FindWindowEx(win,0,'Button',None)win32gui.SendMessage(win,win32con.WM_COMMAND,1,save)# 保存按钮


另外,如果需要知道文件下载完没有可以参考监听浏览器的下载事件