Автоматизация графического интерфейса с использованием pywinauto python.Ошибка атрибута, menu_select () отсутствует ошибка в uaicontrols.py - PullRequest
0 голосов
/ 01 марта 2019

Я пытаюсь автоматизировать щелчок мышью в Windows GUI флажка в свойствах принтера.I get to this by starting print management mmc right clicking on

Я добираюсь до этого, запустив управление печатью mmc, щелкнув правой кнопкой мыши по «G23XnQ2E (local)» из выпадающего меню «Серверы печати» в левой панели и выбрав свойства, переключаяна «вкладку безопасности», и я, наконец, хочу установить флажок для управления принтером.Этого также можно добиться, щелкнув непосредственно в меню действий и выбрав свойства, при условии, что я выбрал «G23XnQ2E (local)» на серверах принтеров.

Я испробовал все возможные способы, которые у меня есть, но всегда получаю много ошибок, таких как «повысить AttributeError», «menu_select», «select ()», «click ()» - «отсутствует".

мой код похож на:

from pywinauto import Application

Application().start(r'mmc printmanagement.msc') 
app = Application(backend="uia").connect(path='mmc.exe')
app.PrintManagement.dump_tree() 
app.dialog.pane1.pane5.pane6.menu.menu_select("Action -> Properties")
#app.dialog.menu_select("Action -> Properties")
#app.dialog.pane1.pane5.pane6.menu.ActionMentuitem.select()
#app.dialog.pane1.pane5.pane6.menu.ActionMentuitem.click()

Как решить проблему?

1 Ответ

0 голосов
/ 03 марта 2019

menu_select подходит для главного меню, такого как «Файл-> Открыть».Это не работает для всплывающих / контекстных меню.Это мой код, работающий на моем ПК (имя сервера печати было изменено на ваше):

from pywinauto import Application

Application().start(r'mmc printmanagement.msc') 
app = Application(backend="uia").connect(path='mmc.exe')
#app.PrintManagement.dump_tree()

print_servers = app.PrintManagement.child_window(title="Print Servers", control_type="TreeItem")
print_servers.select() # it expands the subtree

# call popup menu
print_servers.child_window(title="G23XZNQ2E (local)", control_type="TreeItem").right_click_input()

# alternative way to call popup menu
#print_servers.child_window(title_re=".*\(local\)$", control_type="TreeItem").right_click_input()

# select "Properties..." menu item
app.ContextMenu.child_window(title="Properties...", control_type="MenuItem").select()

#app.PrintManagement.Print_Server_Properties.dump_tree()
app.PrintManagement.Print_Server_Properties.TabControl.select('Security')
app.PrintManagement.Print_Server_Properties.child_window(title="Allow Manage Printers", control_type="CheckBox").toggle()

Все child_window спецификации были скопированы с dump_tree() выходов.Некоторые окна являются дочерними по отношению к главному окну, но контекстное меню - это верхний уровень.Это не задокументированный опыт, но мы работаем над функцией записи, запланированной в этом году как Beta.Так что будет гораздо проще сгенерировать скрипт, не задумываясь о структуре иерархии.

...