vasily-v-ryabov on atspi
ci job for atspi (compare)
Also for “uia” backend top window can be child of main form. In this case it should look like app.MainFormTitle.child_window(control_type=“window”, active_only=True).
Здравствуйте, в UIA прошелся инспектором по меню. отрыть 2го уровня меню удалось, но никак не может нажать на кнопку. Использовал, click, invoke, select , - падает просто указывая на строку вызова. app.UntitledNotepad.menu_select("File -> Exit") - работает, в другом приложении не работает - main_window.MenuSelect('Setup->Securities & Parties->Securities').click() - не работает. Cмог открыть меню, не не позволяет нажать на поледий отрытый елемент:
main_window.window(control_type="MenuBar", title="CrdMenuStrip").child_window(control_type="MenuItem", title="Setup").select()
main_window.window(control_type="MenuBar", title="CrdMenuStrip").child_window(control_type="MenuItem", title="Setup").\
child_window(control_type="MenuItem", title="Securities & Parties").select()
main_window.window(control_type="MenuBar", title="CrdMenuStrip").child_window(control_type="MenuItem", title="Setup"). \
child_window(control_type="MenuItem", title="Securities & Parties").child_window(control_type="MenuItem", title="Securities").click()
вегда вылетает ошибка:
def init(self, errors='strict'):
IncrementalDecoder.init(self, errors)
# undecoded input that is kept between calls to decode()
self.buffer = b""
Здравствуйте, Василий.
Кажется, что print_control_identifiers() обходит далеко не все объекты, если backend='uia'
Например, Inspect.exe в режиме UI Automation находит гораздо больше "детей", когда print_control_identifiers() от основного окна находит только "родителя".
python:
[IN]
import pywinauto
a = pywinauto.application.Application(backend='uia')
a.connect(process=3936)
p = a.window()
p.print_control_identifiers()
[OUT]
Control Identifiers:
Dialog - '1С:Предприятие - ERP' (L551, T144, R1460, B764)
['1С:Предприятие - ERPDialog', 'Dialog', '1С:Предприятие - ERP']
child_window(title="1С:Предприятие - ERP", control_type="Window")
.child_window()
можно явно прописать visible_only=False
. Несколько неудобно, но пока так.
app = Application(backend='uia')
app.start(r'../Battle.net.exe')
time.sleep(1)
rect = app.window(title='Blizzard Battle.net Login').rectangle()
C:\Users\Administrator\AppData\Local\Programs\Python\Python37\python.exe "C:/Program Files (x86)/Battle.net/Bot/AutoController.py"
Traceback (most recent call last):
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37\lib\site-packages\pywinauto\application.py", line 256, in __resolve_control
criteria)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37\lib\site-packages\pywinauto\timings.py", line 458, in wait_until_passes
raise err
pywinauto.timings.TimeoutError
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:/Program Files (x86)/Battle.net/Bot/AutoController.py", line 20, in <module>
a = app.window(title='Blizzard Battle.net Login').rectangle()
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37\lib\site-packages\pywinauto\application.py", line 378, in getattribute
ctrls = self.resolve_control(self.criteria)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37\lib\site-packages\pywinauto\application.py", line 259, in resolve_control
raise e.original_exception
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37\lib\site-packages\pywinauto\timings.py", line 436, in wait_until_passes
func_val = func(args, *kwargs)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37\lib\site-packages\pywinauto\application.py", line 201, in __get_ctrl
dialog = self.backend.generic_wrapper_class(findwindows.find_element(criteria[0]))
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37\lib\site-packages\pywinauto\findwindows.py", line 87, in find_element
raise ElementNotFoundError(kwargs)
pywinauto.findwindows.ElementNotFoundError: {'title': 'Blizzard Battle.net Login', 'backend': 'uia', 'process': 29520}
Process finished with exit code 1
Hello, I have error, can U help me?
def tab1_check(self):
app3 = Application()
app3.start(tab1_path_to_sitelink)
global tab1_connect
tab1_connect = app3.process
print(tab1_connect)
self.tab1_sod()
def tab1_sod(self):
try:
app2 = Application(backend="uia").connect(process=f'{tab1_connect}', visible_only=False)
s_o_d = app2.window(process=f'{tab1_connect}')
raise ProcessNotFoundError('Process with PID={} not found!'.format(self.process))
pywinauto.application.ProcessNotFoundError: Process with PID=16508 not found!