在搜索之后,我找不到一个好的回复:
我正在尝试使用pywinauto实现公司软件的自动化。只要有可能,我就尽量使用app.print_control_identifiers()
。这是上帝的恩赐!感谢Youtube和Vasily的帖子上的人们。请参阅下面的代码。
在安装过程中,它想要安装MS VC++可再发行版,我可以处理这一点。
下一个问题是告诉我Adobe Flash Player的版本(我知道,对吧?)是不兼容的。我已经使用Inspect来标识我需要单击以继续操作的OK按钮。以下是代码(清理后供公众使用):
from pywinauto.application import Application
import time
app = Application(backend="uia").start("C:\\Users\\me\\program.exe")
time.sleep(5)
#This addresses the need to install Microsoft C++ Redistributable
dlg = app['program - InstallShield Wizard']
dlg.Install.click()
time.sleep(5)
#This is to get past an install failure and to move on
dlg.Yes.click()
time.sleep(10)
#This is a dialog box saying that some component is incompatible and this is where I am stuck
# And the window title now just says 'program' vs. 'program - InstallShield Wizard'
new_dlg = app['program']
new_dlg.OK.click()
以下是失败信息:
C:\Python37\python.exe C:/Users/me/PycharmProjects/myProject/pywinauto_install.py
Traceback (most recent call last):
File "C:\Python37\lib\site-packages\pywinauto\application.py", line 258, in __resolve_control
criteria)
File "C:\Python37\lib\site-packages\pywinauto\timings.py", line 458, in wait_until_passes
raise err
pywinauto.timings.TimeoutError
在处理上述异常的过程中,发生了另一个异常:
Traceback (most recent call last):
File "C:/Users/me/PycharmProjects/myProject/pywinauto_install.py", line 23, in <module>
new_dlg.OK.click()
File "C:\Python37\lib\site-packages\pywinauto\application.py", line 379, in __getattribute__
ctrls = self.__resolve_control(self.criteria)
File "C:\Python37\lib\site-packages\pywinauto\application.py", line 261, in __resolve_control
raise e.original_exception
File "C:\Python37\lib\site-packages\pywinauto\timings.py", line 436, in wait_until_passes
func_val = func(*args, **kwargs)
File "C:\Python37\lib\site-packages\pywinauto\application.py", line 203, in __get_ctrl
dialog = self.backend.generic_wrapper_class(findwindows.find_element(**criteria[0]))
File "C:\Python37\lib\site-packages\pywinauto\findwindows.py", line 87, in find_element
raise ElementNotFoundError(kwargs)
pywinauto.findwindows.ElementNotFoundError: {'best_match': 'program', 'backend': 'uia', 'process': 22184}
Process finished with exit code 1
我基于我看到的一篇文章创建了new_dlg,所以如果这是错误的,请拍拍我的手。我不是一个训练有素的开发人员。谢谢
发布于 2020-10-19 20:41:53
要检查顶层对话框窗口的文本,请打印以下内容:
print([w.window_text() for w in app.windows()])
然后,只需将正确的密钥复制到您的代码中作为dict key,而不是app['program']
。更灵活的方式看起来像这样:
new_dlg = app.window(title_re="Program - .*")
https://stackoverflow.com/questions/64268631
复制相似问题