自动化工具pywinauto初接触

大家经常有一些重复操作电脑的动作,例如对某软件进行测试的时候,而完全借助人工操作会比较费时费力,实际上大家可以借助一些自动化测试软件进行自动操作。而软件自动化测试工具形形色色,诸如KylinTop、UFT、SilkTest等商业软件,也有Selenium、UIAutomation、Robot Framework以及pywinauto等开源工具。这些软件各有优劣,读者不可能也完全没有必要去了解并学习所有的测试工具,可以自行查找资料进行比对,选择适合自己需求的软件进行开发定制。在了解主流工具的基础上,选择一款用起来得心应手的工具软件进行详细了解和使用即可,所谓熟能生巧,用得多了自然也就越来越熟练了。

本文先以pywinauto为例进行简单介绍,也可以参考此处官方文档(https://pywinauto.readthedocs.io/en/latest/contents.html)进行详细了解,也可以在http://pywinauto.github.io/ 了解更多信息。

Pywinauto模块安装:pip install pywinauto,其中pip也可以根据实际情况换为pip2或pip3。

针对记事本的简单操作:

from pywinauto.application import  Application
app=Application().start('notepad.exe')
app.无标题记事本.print_control_identifiers()
app.UntitledNotepad.menu_select('帮助(&H)->关于记事本(&A)')
app.关于记事本.print_control_identifiers()
app.关于记事本.确定.click()
# app.AboutNotepad.type_keys("{DOWN}")
# # app.UntitledNotepad.确定.click()
app.UntitledNotepad.Edit.type_keys("pywinauto works!\n\r",with_spaces=True)
app.UntitledNotepad.type_keys("{ENTER}")
app.UntitledNotepad.type_keys("%FS")
app.另存为.print_control_identifiers()
app.另存为.Edit1.type_keys("test.txt{ENTER}",with_spaces=True)
app.另存为.保存.click()

可能有很多网友直接复制粘贴上面的程序代码并运行时会报错,实际上这与所使用的操作系统配置有关,如果打开记事本之后显示的不是中文字符,而是英文甚至其他语言,那么本程序自然无法正确运行。例如官方的例子:

from pywinauto.application import Application
# Run a target application
app = Application().start("notepad.exe")
# Select a menu item
app.UntitledNotepad.menu_select("Help->About Notepad")
# Click on a button
app.AboutNotepad.OK.click()
# Type a text string
app.UntitledNotepad.Edit.type_keys("pywinauto Works!", with_spaces = True)

显然是操作系统语言设置不同,导致记事本notepad.exe的显示文字不同。

要做到自动化,需要能够选定定位到要操作的元素。目前相关的定位元素攻击包括:spy++(win32),Inspect(uia),UI Spy等,当然在http://pywinauto.github.io/ 可以看到包括了Swapy,可以简单生成pywinauto代码。但是从网站信息来看,目前该软件已经不再被维护,将由py_inspect代替。但是目前查询py_inspect的相关资料很少,仅仅在https://github.com/dm-vodopyanov/py_inspect找到一个同名的。而且核心内容只有一个py文件。不知道是否是官方计划取代swapy的版本。感兴趣的读者,建议使用inspect软件,笔者提供该软件的一个百度网盘,敬请在本文末尾寻找下载链接。

关于定位元素工具的使用,本文不再展开,读者可以自行搜索,或者参考这篇大作:https://cloud.tencent.com/developer/article/1515369

总而言之,利用pywinauto可以做很多重复性的工作,让用户从重复动作中解放出来。笔者就使用pywinauto实现了微信自动发送指定消息内容给某个特定微信好友,有意欢迎联系讨论。

更多技术文章,欢迎关注笔者公众号:datatop1,或者扫描二维码:

附件:定位元素工具包:https://download.csdn.net/download/booklijian/12354110  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值