如何使用pywinauto安装应用程序(setup.exe)

时间:2018-07-24 12:48:05

标签: python pywinauto

我正在尝试安装使用安装盾(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()

1 个答案:

答案 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)