Search code examples
pythonwinscppywinauto

Automating WinSCP file transfer in Python using using pywinauto


I am trying to automate a file transfer process in WinSCP using Python and pywinauto. I am currently sending keyboard keys of Ctrl+ to open a directory and search a path, but when I run my program, it will not open the open directory window. Please help!

kb.send_keys("^0")

app1 = Application().connect(title=u'Open directory')
win1 = app1.TOpenDirectoryDialog

src_folder = "/data/cog/deployments"
win1[u'Edit'].type_keys(src_folder)
win1.OK.click()

This is the error code I am getting:

Traceback (most recent call last):
  File "C:\Users\RAR\PycharmProjects\pythonAutomationproj\main.py", line 49, in <module>
    app1 = Application().connect(title=u'Open directory')
  File "C:\Users\RAR\PycharmProjects\pythonAutomationproj\venv\lib\site-packages\pywinauto\application.py", line 997, in connect
    self.process = findwindows.find_element(**kwargs).process_id
  File "C:\Users\RAR\PycharmProjects\pythonAutomationproj\venv\lib\site-packages\pywinauto\findwindows.py", line 87, in find_element
    raise ElementNotFoundError(kwargs)
pywinauto.findwindows.ElementNotFoundError: {'title': 'Open directory', 'backend': 'win32', 'visible_only': False}

Solution

  • Do not try to implement file transfer by automating WinSCP GUI!

    Use WinSCP scripting. Start at:
    https://winscp.net/eng/docs/guide_automation

    WinSCP GUI can even generate script template for you:
    https://winscp.net/eng/docs/guide_automation#generating


    Or use native Python file transfer libraries. ftplib for FTP. Or Paramiko for SFTP.