我正在尝试安装使用安装盾(Setup.exe)构建的应用程序。安装过程包含两个对话框。安装开始FTDI CDM驱动程序,然后继续实际的应用程序。要求是要使用pywinauto自动进行安装。问题是如何在安装过程中通过安装过程动态检测对话框,而无需人工干预。我使用os.system()调用setup.exe,但无法掌握其中弹出的对话框。
我使用python 64位版本3.5.2
import pywinauto, time, os
from pywinauto.application import Application
sv = os.system("C:\Python_Samples\AutomationScripts\Release_Setup.exe")
app = Application().Connect(title=u'FTDI CDM Drivers', class_name='#32770')
window = app.Dialog
button = window.Button2
button.SetFocus()
button.Click()
答案 0 :(得分:0)
要在没有pywinauto的情况下安装此驱动程序,您需要使用devcon.exe
实用程序(可以通过Google轻松下载),其命令为:devcon.exe install ftdibus.inf <hw_id>
,其中hw_id是设备管理器中设备属性的“硬件ID”属性(手动右键单击设备的“属性”,转到第二个选项卡,然后选择“硬件ID”组合框项。
您尝试检测的对话框可能是信任该制造商的确认对话框。如果您有要添加到PC上“根证书”存储区的证书文件,通常可以通过certutil
命令将其自动化。但是D2XX驱动程序没有证书文件,因此您必须通过pywinauto检测此对话框。
可以这样做:
from pywinauto import Desktop
popup_dialog = Desktop(backend="win32").window(title="Some title")
# wait up to 10 seconds, return False if timed out
if popup_dialog.exists(timeout=10):
popup_dialog.Trust.click() # or maybe .click_input()
popup_dialog.wait_not('visible') # make sure it's gone (raise exception otherwise)