我是Python的新手,所以不能肯定地说问题出在哪里:在PyWinAuto或我对Python的了解。
我运行下一个脚本Windows(Python 3.5.2):
#!/usr/bin/env python3
import os
import sys
import pywinauto
def testLicenseForm():
app = pywinauto.Application().Start('Calc.exe')
try:
LicenseForm = app['Nonsense name']
LicenseForm.OK.Click()
# raise pywinauto.findbestmatch.MatchError
# raise pywinauto.timings.TimeoutError
except (pywinauto.timings.TimeoutError, pywinauto.findbestmatch.MatchError) as e:
f = open('R:\Temp\diagnostic\log.errors', 'w')
f.write('Exception raised')
sys.exit('Error in script'.format(__file__))
if __name__ == '__main__':
testLicenseForm()
问题是创建了log.errors,但是为空。如果我改变这样的代码:
# LicenseForm.OK.Click()
raise pywinauto.findbestmatch.MatchError
创建了log.errors文件并在其中包含预期的文本。 不确定问题出在哪里。如果pywinauto抛出异常,如何更改脚本以将一些信息写入文件。
答案 0 :(得分:0)
f.write
)或执行f.close()
之前, f.flush()
不保证会写入数据。但我建议您采用以下方式:
with open('R:\Temp\diagnostic\log.errors', 'w') as f:
f.write('Exception raised')
此上下文管理器将在退出with
部分时自动关闭文件。即使在with
内引发异常,该文件也会保证关闭。