Python UI Automation Testing

测试开发

测试开发

美之测试

美之测试

尽可能多的执行

美之测试

稳定是根本

美之测试

精准是要求

美之测试

简洁是追求
Python

Python

GUI测试

GUI测试

又爱又恨

GUI测试

恨,是因为……

GUI测试

爱,是因为……

Python GUI自动化测试

现有框架或库:

Watsup

Watsup Example


window = findwindow(title = "Untitled - Notepad", class = "Notepad")
SendKeys(window, "%OF"# Format -> Font
fontdialog  = findwindow("title = "Font")
buttonClick(fontdialog, "OK")

PyWinAuto

PyWinAuto Example


win = app.UntitledNotepad
win.MenuSelect("Format->Font")
app.Font.OK.Click()

PyWinAuto

PyWinAuto Example
app.Notepad.MenuSelect("File->SaveAs")
app.SaveAs.ComboBox5.Select("UTF-8")
app.SaveAs.edit1.SetText("Example-utf8.txt")
app.SaveAs.Save.Click()

PyWinAuto

特点
  • Pythonic
  • 简单
  • 易读
  • Localization
  • Control Identifiers

PyWinAuto

不足


对其他非标准控件支持不好。比如:微软的IE控件以及其他的第三方自定义控件。

KWinAuto

KWinAuto
  • Kingsoft Windows UI Automation Testing Framework
  • 借鉴了PyWinAuto的优点
  • 弥补了PyWinAuto的不足
  • 简单适用就好
  • 还在继续完善中……

PyWinAuto

特点
  • Pythonic
  • Control Identifiers
  • IE控件的完美支持
  • IAccessable接口,为支持更多第三方控件提供可能

KWinAuto

KWinAuto Example
kismain = Window(u'金山毒霸')['Internet Explorer_Server']

kismain.scan_virus_tag_id.Click()
kismain.alldisk_scan_btn.Click()
kismain.start_scan_btn_id.Click()

time.sleep(5)

kismain.Img_Scan_Stop.Click(False)

Window(u'金山毒霸')[u'是(&Y)'].Click()

kismain.Btn_Window_Close.Click()

KWinAuto

Control Identifiers

KWinAuto

Control Identifiers
>>> kislive = Window(u'金山毒霸在线升级程序')
>>> kislive.DisplayAllControls()
--------------------
Button 取消 132962
  identifiers: Button5, Button1003, Button_4, 取消
--------------------
Button <上一步(&B) 132964
  identifiers: <上一步(&B), Button4, Button1000, Button_3  

KWinAuto

Control Identifiers
kislive[u'上一步(&B)>'].Click()

// Or
kislive.Button4.Click()

KWinAuto - PySpy

Control Identifiers

Python 天天美味(36) - 用Python实现Spy++

KWinAuto - PySpy

比Spy++更强的地方:识别IE控件

Q&A