当前位置:   article > 正文

uiautomation:基于windows的ui自动化框架

uiauto

更多内容,可以微信搜索[公][众][号]【郑大钱呀】,关注我们,一起学技术!

前言

由于测试工作的需要,对于某些场景,总是需要进行一些重复的操作,比如测试一个股票交易下单的功能,需要覆盖不同的种类代码(主板、创业板、科创板、场内基金等),这个时候使用人工的方式去测试,枯燥乏味,且效率不高,所以就想寻求一种解决方案,通过UI自动化的方式来完成重复工作。目前支持Windows平台的UI自动化工具或框架有很多,比如:Autoit、pywinauto、UIautomation、airtest 等等,这里我们使用由国人yinkaisheng开发的UIautomation框架来实现。

UIautomation框架介绍

uiautomation是yinkaisheng业余时间开发的供其自己使用的一个模块,uiautomation封装了微软UIAutomation API,支持自动化Win32,MFC,WPF,Modern UI(Metro UI), Qt, IE, Firefox等UI框架,最新版uiautomation2.0目前只支持Python 3版本,依赖comtypes和typing这两个包,但不要使用3.7.6和3.8.1这两个版本,comtypes在这两个版本中不能正常工作。

uiautomation支持在Windows XP SP3或更高版本的Windows桌面系统上运行。如果是Windows XP系统,请确保系统目录有这个文件:UIAutomationCore.dll。如果没有,需要安装补丁 KB971513 才能支持UIAutomtion.在Windows 7或更高版本Windows系统上使用uiautomation时,要以管理员权限运行Python,否则uiautomation运行时很多函数可能会执行失败或抛出异常。或者先以管理员权限运行cmd.exe,在cmd中再调用Python。

小试牛刀

工具好不好,先来试一下,先感受一下,这里我们以电脑中自带的计算器为例,简单的感受一下,实现一系列的计算,演示的步骤如下:

  1. 通过Win+R,打开运行窗口
  2. 输入calc,打开计算器程序
  3. 计算55*134
  4. 关闭计算器程序
  5. 结束

演示视频如下

UIautomation自动化代码演示

演示代码如下

from time import sleep
import uiautomation as auto

class Calc():
    def open_calc(self):
        #打开计算器
        desktop=auto.PaneControl(Name='任务栏')
        #点击任务栏
        desktop.Click()
        #Win+D ,显示桌面
        desktop.SendKeys('{Win}d')
        #Win+R ,打开运行界面,并输入calc,打开浏览器
        desktop.SendKeys('{Win}r')
        run_win = auto.WindowControl(Name='运行')
        run_win_edit=run_win.EditControl(ClassName='Edit',Name='打开(O):')
        run_win_edit.SendKeys("calc")
        run_win_ok=run_win.ButtonControl(ClassName="Button",Name='确定')
        run_win_ok.Click()
        sleep(3)

    def calc_auto(self):
        calc_win=auto.WindowControl(ClassName='ApplicationFrameWindow',Name="计算器")
        # 开始计算
        calc_five=calc_win.ButtonControl(Name='五')
        calc_five.Click()
        calc_five.Click()
        calc_mult=calc_win.ButtonControl(Name='乘以')
        calc_mult.Click()
        calc_one = calc_win.ButtonControl(Name='一')
        calc_one.Click()
        calc_three = calc_win.ButtonControl(Name='三')
        calc_three.Click()
        calc_four = calc_win.ButtonControl(Name='四')
        calc_four.Click()
        calc_equal= calc_win.ButtonControl(Name="等于")
        calc_equal.Click()
        sleep(3)
        calc_win_close_btn = calc_win.ButtonControl(AutomationId='Close')
        calc_win_close_btn.Click()


if __name__ == '__m
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/643168
推荐阅读
相关标签
  

闽ICP备14008679号