Не удается получить доступ к файлам в элементе управления списком

Я планирую выполнять этот скрипт на удаленном рабочем столе, чтобы каждый день автоматически загружать файл с помощью WinSCP.

Пока этот скрипт может войти в систему и получить доступ к окну проводника, но я не могу получить доступ к файлам в окне. Я хотел бы иметь возможность перебирать список файлов и открывать определенный.

Файлы помечены как «ГГГГ-ММ-ДД-0001», «ГГГГ-ММ-ДД-0002» и т. д., и я хочу иметь возможность открыть самый последний файл на соответствующую дату.

import pywinauto
from pywinauto.application import Application
from pywinauto.keyboard import send_keys
from pywinauto import keyboard as kb
import time

HOST_NAME = ''
USER_NAME = ''
PASSWORD = ''
PORT_NUMBER = ''
DIRECTORY = ''

main_app = Application(backend='uia').start(cmd_line=r"C:\Program Files (x86)\WinSCP\WinSCP.exe").connect(title='WinSCP', timeout=10)
main_dlg = main_app.window(title='WinSCP')
main_dlg.set_focus()

Login_app = Application().connect(title=u'Login', class_name='TLoginDialog', timeout=10)
Login_dlg = Login_app.window(title=u'Login', class_name='TLoginDialog')
Login_dlg.set_focus()
Login_dlg.wait('ready', timeout=10)

Login_dlg['Edit1'].set_text(PORT_NUMBER) # Port Number
Login_dlg['Edit2'].set_text(PASSWORD) # Password
Login_dlg['Edit3'].set_text(USER_NAME) # User name
Login_dlg['Edit4'].set_text(HOST_NAME) # Host Name

Login_dlg['Button5'].click() # Login


appExplorer = Application().connect(title_re='.*' + HOST_NAME + ' - WinSCP', class_name = "TScpExplorerForm", timeout=10)

winExplorer = appExplorer.window(title_re='*- carestreamhealth@' + HOST_NAME + ' - WinSCP', class_name='TScpExplorerForm')
winExplorer.wait('visible',timeout=10)
winExplorer.set_focus()

winExplorer.TTBXToolbar4.click_input() # click into Address bar
winExplorer.TTBXToolbar4.TTBXEdit.set_text(DIRECTORY)
send_keys('{ENTER}')
winExplorer.wait('ready', timeout=10)

Мартин прав. Любая автоматизация SSH/FTP/SFTP может быть выполнена без вызова GUI.

Vasily Ryabov 06.04.2023 13:57
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
1
50
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Почему вы автоматизируете графический интерфейс WinSCP для загрузки файлов?

Используйте сценарии WinSCP:
https://winscp.net/rus/docs/guide_automation

Смотрите также:
Из Python запускайте команды WinSCP в консоли

Другой вариант — использовать собственные модули Python FTP/SFTP.

Я рассмотрю эту автоматизацию WinSCP.

Для справки, я также обнаружил, что эта строка кода делает так, что я могу видеть только элементы управления win32:

appExplorer = Application().connect(title_re='.*' + HOST_NAME + ' - WinSCP', class_name = "TScpExplorerForm", timeout=10)

Когда я изменил его на это, у меня был доступ к элементам управления uia, и они отображали файлы как дочерние элементы в элементах управления списком.

appExplorer = Application(backend='uia').connect(title_re='.*' + HOST_NAME + ' - WinSCP', class_name = "TScpExplorerForm", timeout=10)

Хотя я также понял, что нет смысла создавать еще один объект приложения, я мог бы повторно использовать основной объект приложения, чтобы открыть окно проводника. main_app уже был установлен как backend='uia'

winExplorer = main_app.window(title_re='.*' + USER_NAME + '@' + HOST_NAME + ' - WinSCP', class_name='TScpExplorerForm')

Другие вопросы по теме