Downloading file using IE from python
Question: I'm trying to download file with Python using IE:

    
    
    from win32com.client import DispatchWithEvents
    
    class EventHandler(object):
        def OnDownloadBegin(self):
            pass
    
    ie = DispatchWithEvents("InternetExplorer.Application", EventHandler)
    
    ie.Visible = 0
    
    ie.Navigate('http://website/file.xml')
    

After this, I'm getting a window asking the user where to save the file. How
can I save this file automatically from python?

I need to **use some browser** , not urllib or mechanize, because **before
downloading file I need to interact with some ajax functionality**.


Answer: This works for me as long as the IE dialogs are in the foreground and the
downloaded file does not already exist in the "Save As" directory:

    
    
    import time
    import threading
    import win32ui, win32gui, win32com, pythoncom, win32con
    from win32com.client import Dispatch
    
    class IeThread(threading.Thread):
        def run(self):
            pythoncom.CoInitialize()
            ie = Dispatch("InternetExplorer.Application")
            ie.Visible = 0
            ie.Navigate('http://website/file.xml')
    
    def PushButton(handle, label):
        if win32gui.GetWindowText(handle) == label:
            win32gui.SendMessage(handle, win32con.BM_CLICK, None, None)
            return True
    
    IeThread().start()
    time.sleep(3)  # wait until IE is started
    wnd = win32ui.GetForegroundWindow()
    if wnd.GetWindowText() == "File Download - Security Warning":
        win32gui.EnumChildWindows(wnd.GetSafeHwnd(), PushButton, "&Save");
        time.sleep(1)
        wnd = win32ui.GetForegroundWindow()
    if wnd.GetWindowText() == "Save As":
        win32gui.EnumChildWindows(wnd.GetSafeHwnd(), PushButton, "&Save");
    

