Выполнение скриптов Pywinauto из приложения C# происходит медленно - PullRequest
0 голосов
/ 23 апреля 2020

Обновлено 7 мая, историческая справка находится в строке "***********************"

@ Якуб Сова Не могу добавить любой комментарий ниже вашего, я пробовал top_window и children (), мне это не показалось. пример fox не имеет атрибута 'draw_outline'

Итак, не могли бы вы привести конкретный пример c, чтобы продемонстрировать, как он работает в вашем случае?


Я занимался автоматизацией pywinauto для пару месяцев, но он работает медленно для некоторого кода, например:

Я нажимаю кнопку для подтверждения в следующем коде:

self.dlg = cg.appConnect().window(title="Hygine_Platform", control_type="Window")

self.regdlg = self.dlg.child_window(title ="registry", auto_id ="FormRegBalance", control_type="Window") 

self.okbtn = self.regdlg.child_window(title="confirm",auto_id="btnOk",control_type="Button")

def clickConfSettle(self):

self.okbtn.click_input()

Если я использую clickConfSettle (), это займет по крайней мере пять секунд, чтобы закончить. У кого-нибудь есть такая же проблема, есть ли решение для этого? Я проверил структуру элементов управления, она довольно простая, имеет только 3 уровня.

1 Ответ

0 голосов
/ 23 апреля 2020

Я использую библиотеку только неделю или две, но я решил, что если вы получите спецификацию окна верхнего окна, и это дети, как можно скорее, как, например, self.app.top_window().children(), где app - это pywinauto.Application(backend='uia', allow_magic_lookup=False).connect(handle=self.handle) тогда ваше приложение должно работать намного быстрее.

Это отнимает у вас сложный поиск, однако вы все равно можете обращаться к элементам по индексам или перебирать их (что в моем случае было намного быстрее, чем при использовании метода child_window). Я не уверен насчет щелкающей части, поскольку для этого может потребоваться больше времени, но по большей части - все поиски в моей программе прошли менее 1 с после этого изменения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...