Функция "print_control_identifiers ()" не получает никакой информации из ComboBox на эмуляторе Dolphin Gamecube - PullRequest
0 голосов
/ 02 января 2019

Я использую эмулятор Dolphin 5.0-6711 gcb, который является одной из старых версий и использует Qt5. Я пытаюсь открыть «Файл-> Инструменты-> Запустить Netplay ...» и запустить хост из этого нового открытого окна с именем «Настройка Dolphin NetPlay». Я могу отредактировать Port, Nickname и выбрать игру из ListBox. Но я не могу выбрать какие-либо элементы из «Тип подключения» ComboBox, который имеет опции Direct Connection и Treversal Server. Когда я использую print_control_identifiers() для окна «Dolphin NetPlay Setup», я не вижу никаких элементов ComboBox. Это мой вывод из print_control_identifiers():

Dialog - 'Dolphin NetPlay Setup'    (L627, T351, R1277, B854)
[u'Dolphin NetPlay Setup', u'Dialog', u'Dolphin NetPlay SetupDialog']
child_window(title="Dolphin NetPlay Setup", control_type="Window")
   |
   | Pane - 'panel'    (L636, T389, R1268, B845)
   | ['Pane', u'panelPane0', u'panelPane1', u'panel', u'panelPane', 
u'panel0', u'panel1', u'Pane1', u'Pane0']
   | child_window(title="panel", auto_id="-31967", control_type="Pane")
   |    |
   |    | Static - 'Connection Type:'    (L642, T398, R756, B419)
   |    | [u'Connection Type:Static', u'Connection Type:1', u'Connection 
Type:0', u'Static', u'Connection Type:Static1', u'Connection Type:Static0', 
u'Static1', u'Static0', u'Connection Type:']
   |    | child_window(title="Connection Type:", auto_id="-31966", 
control_type="Text")
   |    |
   |    | ComboBox - 'Connection Type:'    (L762, T395, R950, B423)
   |    | [u'Connection Type:ComboBox', u'Connection Type:2', 'ComboBox']
   |    | child_window(title="Connection Type:", auto_id="-31965", 
control_type="ComboBox")
   |    |    |
   |    |    | Static - 'Connection Type:'    (L3, T3, R164, B25)
   |    |    | [u'Connection Type:3', u'Connection Type:Static2', u'Static2']
   |    |    | child_window(title="Connection Type:", control_type="Text")
   |    |    |
   |    |    | Button - 'Open'    (L930, T396, R949, B422)
   |    |    | [u'OpenButton', u'Button1', u'Button0', u'Open', 'Button']
   |    |    | child_window(title="Open", auto_id="DropDown", control_type="Button")
   |    |
   |    | Static - 'Nickname:'    (L642, T432, R711, B453)
   |    | [u'Nickname:', u'Nickname:Static', u'Static3']
   |    | child_window(title="Nickname:", auto_id="-31963", control_type="Text")
   |    |
   |    | Edit - 'Nickname:'    (L762, T429, R950, B457)
   |    | [u'', u'0', u'Edit1', u'Nickname:Edit', u'1', 'Edit', u'Edit0']
   |    | child_window(title="Nickname:", auto_id="-31962", control_type="Edit")
   |    |
   |    | Button - 'Quit'    (L1162, T804, R1262, B839)
   |    | ['Button2', u'Quit', u'QuitButton']
   |    | child_window(title="Quit", auto_id="-31960", control_type="Button")
   |    |
   |    | TabControl - ''    (L642, T490, R1262, B798)
   |    | [u'2', u'TabControlHost', u'TabControlConnect', u'TabControl']
   |    | child_window(auto_id="-31959", control_type="Tab")
   |    |    |
   |    |    | Pane - 'panel'    (L646, T519, R1258, B794)
   |    |    | [u'panelPane2', u'panel2', 'Pane2']
   |    |    | child_window(title="panel", auto_id="-31957", control_type="Pane")
   |    |    |    |
   |    |    |    | Static - 'Port:'    (L652, T528, R682, B549)
   |    |    |    | [u'Port:', u'Port:Static', u'Static4']
   |    |    |    | child_window(title="Port:", auto_id="-31949", control_type="Text")
   |    |    |    |
   |    |    |    | Edit - 'Port:'    (L688, T525, R823, B553)
   |    |    |    | [u'3', u'Port:Edit', 'Edit2']
   |    |    |    | child_window(title="Port:", auto_id="-31948", control_type="Edit")
   |    |    |    |
   |    |    |    | Button - 'Host'    (L1152, T753, R1252, B788)
   |    |    |    | [u'Host1', u'Host0', u'Host', 'Button3', u'HostButton']
   |    |    |    | child_window(title="Host", auto_id="-31945", control_type="Button")
   |    |    |    |
   |    |    |    | ListBox - ''    (L652, T559, R1252, B747)
   |    |    |    | [u'4', u'ListBox']
   |    |    |    | child_window(auto_id="-31944", control_type="List")
   |    |    |    |    |
   |    |    |    |    | ListItem - 'CAPCOM VS. SNK 2 EO (GEOE08)'    (L654, T561, R1250, B581)
   |    |    |    |    | [u'ListItem', u'CAPCOM VS. SNK 2 EO (GEOE08)', u'CAPCOM VS. SNK 2 EO (GEOE08)ListItem']
   |    |    |    |    | child_window(title="CAPCOM VS. SNK 2 EO (GEOE08)", control_type="ListItem")
   |    |    |    |
   |    |    |    | CheckBox - 'Forward Port (UPnP)'    (L829, T529, R991, B549)
   |    |    |    | ['CheckBox', u'Forward Port (UPnP)', u'Forward Port (UPnP)CheckBox']
   |    |    |    | child_window(title="Forward Port (UPnP)", auto_id="-31943", control_type="CheckBox")
   |    |    |
   |    |    | TabItem - 'Connect'    (L644, T492, R710, B517)
   |    |    | [u'ConnectTabItem', 'TabItem', u'Connect', u'TabItem0', u'TabItem1']
   |    |    | child_window(title="Connect", control_type="TabItem")
   |    |    |
   |    |    | TabItem - 'Host'    (L710, T492, R770, B517)
   |    |    | [u'Host2', 'TabItem2', u'HostTabItem']
   |    |    | child_window(title="Host", control_type="TabItem")
   |
   | TitleBar - ''    (L656, T354, R1268, B389)
   | ['TitleBar', u'5']
   |    |
   |    | Menu - 'System'    (L636, T360, R664, B388)
   |    | [u'System0', u'System1', u'System', u'Menu', u'SystemMenu']
   |    | child_window(title="System", auto_id="MenuBar", control_type="MenuBar")
   |    |    |
   |    |    | MenuItem - 'System'    (L636, T360, R664, B388)
   |    |    | [u'System2', u'MenuItem', u'SystemMenuItem']
   |    |    | child_window(title="System", control_type="MenuItem")
   |    |
   |    | Button - 'Minimize'    (L1090, T352, R1150, B389)
   |    | ['Button4', u'Minimize', u'MinimizeButton']
   |    | child_window(title="Minimize", control_type="Button")
   |    |
   |    | Button - 'Maximize'    (L1150, T352, R1209, B389)
   |    | ['Button5', u'MaximizeButton', u'Maximize']
   |    | child_window(title="Maximize", control_type="Button")
   |    |
   |    | Button - 'Close'    (L1209, T352, R1269, B389)
   |    | ['Button6', u'CloseButton', u'Close']
   |    | child_window(title="Close", control_type="Button")

Это мои коды для запуска хоста без выбора элементов ComboBox:

from pywinauto.application import Application


app = Application(backend="uia")
app.start(r"./Dolphin-x64/Dolphin.exe")
dlg = app["Dolphin"]
dlg.menu_select("Tools->Start NetP")
netplay = app["Dolphin NetPlay Setup"]
netplay.print_control_identifiers()
netplay.Pane.Edit.set_text(username)
netplay.Pane.TabControl.select("Host")
netplay.Pane.TabControl.Pane.Edit.set_text("9999")               
netplay.Pane.TabControl.Pane.ListBox.child_window(title="CAPCOM VS. SNK 2 EO (GEOE08)", control_type="ListItem").select()
netplay.Pane.TabControl.Pane.Button.click()

Я хочу выбрать первую опцию «Прямое подключение» из ComboBox. Я пробовал select("Direct Connection") и select(0), но не могу решить, какой из них использовать для навигации.

Я даже не могу получить информацию из print_control_identifiers() для главного окна в последней версии Dolphin, поэтому я пытаюсь использовать эту старую версию.

EDIT:

Я обнаружил, что в этом ComboBox есть секретная кнопка. Если я нажму netplay.Pane.ComboBox.Button.click(), то эта кнопка ListBox и вторая секретная кнопка закрытия появятся внутри ComboBox в соответствии с netplay.print_control_identifiers(), и даже если я выберу элемент «Прямое соединение» в ListBox, вы должны закрыть эту вторую секретную кнопку закрытия, чтобы повлиять на изменение ComboBox .

1 Ответ

0 голосов
/ 02 января 2019

Это известная проблема для некоторых полей со списком ( проблема # 532 ), исправленных в основной ветке pywinauto (еще не выпущена, скоро будет в версии 0.6.6).Вы можете попробовать исправить это с помощью

pip uninstall pywinauto
pip install https://github.com/pywinauto/pywinauto/archive/master.zip

Также я вижу, что на их панели инструментов Qt есть «отсоединенные» дочерние кнопки, которые отображаются в Inspect.exe при наведении мыши, но панель инструментов не отображает их как дочерние,Мы работаем над обходным решением, которое также относится к панели инструментов MFC.Это отслеживается в выпуске # 413 .


EDIT1: проблема с последней версией Dolphin выглядит очень странно и, вероятно, это проблема на стороне приложения.Inspect.exe показывает ошибку для свойства Children:

Children:   [Error: calling getter for this property: hr=0xFFFFFFFF80004005 - Unspecified error]

Но это может каким-то образом перестроить иерархию для дочерних элементов главного окна.Это интересно и выглядит для меня новым.Я хочу глубже изучить этот вопрос.

...