暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

常见的PythonGUI必备自动化测试工具

西安川石 2022-08-29
959


每天一个测试技术

只需几分钟

川石信息 带你学点更好的




川石信息|腾讯课堂

免费试学 | 自动化测试


图形用户界面(GUI)是为用户交互提供灵活性的界面,很多小伙伴都希望把自己的Python小程序都加上一个可视化界面。即美观,又有交互性。常见的PythonGUI必备自动化测试工具:



pywinauto


pywinauto是一组用于自动化Microsoft Windows GUI的python模块。最简单的是,它允许您将鼠标和键盘操作发送到窗口对话框和控件。


下载: https://pypi.org/project/pywinauto/


安装:pip install pywinauto


示例:


    from pywinauto.application import Application
    app = Application(backend="uia").start('notepad.exe')
    # 描述Notepad.exe进程内的窗口
    dlg_spec = app.UntitledNotepad
    # 等到窗户真的开着
    actionable_dlg = dlg_spec.wait('visible')


    from subprocess import Popen
    from pywinauto import Desktop


    Popen('calc.exe', shell=True)
    dlg = Desktop(backend="uia").Calculator
    dlg.wait('visible')

    左右拉动查看完整命令



    Pywin32


    Pywin32提供了很多访问windows的API。较重要的三个模块就是win32api、win32gui和win32con


    下载:https://pypi.org/project/pywin32/223/


    安装:pip install pywin32


    示例:


      import time
      import win32gui,win32con
      import keyboardEmulation as ke


      def get_windows(windowsname,filename):
      # 获取窗口句柄
      hwnd = win32gui.FindWindow(None,windowsname)
      # 将窗口放在前台,并激活该窗口
      win32gui.SetForegroundWindow(hwnd)
          # 输入helloworld


          scancodes = [0x230x120x260x260x180x110x180x130x260x200x2a]


      for code in scancodes:
              ke.key_press(code)


      # 保存
      ke.key_down(0x1d)
      ke.key_down(0x1f)
      ke.key_up(0x1d)
          ke.key_up(0x1f)


      # 关闭窗口


      time.sleep(1);
      win32gui.PostMessage(hwnd, win32con.WM_CLOSE, 0, 0)


      get_windows("新建文本文档 (2).txt - 记事本","截图.png")

      左右拉动查看完整命令



      pyautogui


      PyAutoGUI是一个纯Python的GUI自动化工具,其目的是可以用程序自动控制鼠标和键盘操作,多平台支持(Windows,OS X,Linux)


      下载:https://pyautogui.readthedocs.io/en/latest/


      安装:pip3 install pyautogui


      示例:


        #导入模块
        from PIL import ImageGrab
        import pyautogui as auto
        #定义类
        class Screenshoot:
        def __init__(self):
        #self.bbox = bbox
        #self.name = name
        #self.im = ImageGrab.grab(self.bbox)
        #定位xy坐标,confidence为相似度判断,最好不要使用1.0完全相似,比较容易不识别
        self.position_1 = auto.locateCenterOnScreen('1.png', confidence=0.9)
        self.position_2 = auto.locateCenterOnScreen('2.png', confidence=0.9)
        self.position_3 = auto.locateCenterOnScreen('+.png', confidence=0.9)
        self.position_4 = auto.locateCenterOnScreen('=.png', confidence=0.9)
        pass
        def fullshoot(self):
        #全屏截图
        #self.im.save('01.png')
        pass
        def partialshoot(self):
        #局部精确截图
        #self.im.save(self.name+'.png')
        pass
        def position_show(self):
        #打印各坐标
        print(self.position_1)
        print(self.position_2)
        print(self.position_3)
        print(self.position_4)
        def caculate(self):
        #依次点击按钮
        auto.click(self.position_1)
        auto.click(self.position_3)
        auto.click(self.position_2)
        auto.click(self.position_4)
        #对象初始化
        shoot1 = Screenshoot()
        #对象函数执行
        shoot1.position_show()
        shoot1.caculate()
        #shoot1.partialshoot()
        #shoot1.fullshoot()

        左右拉动查看完整命令


        川石信息重磅推出

        “高级性能测试V9.0全新升级”

        (戳我了解升级详情)

        带你从0到1完成企业高阶版测试

        打破性能测试入门僵局

        课程详情联系下方课程老师



        今天的内容就学习到这里了,每个工作日小编都会更新一个有关测试的小知识,希望大家多多关注我们,一起来学习喔!


        温馨提示:添加老师微信【13691729932】可以获取全套软件测试自学资料!


         往期回顾 

        WEB端UI测试相关工具介绍



        大神邀你加入

        软件测试群

        免费软件测试课

        川石课堂


        文章转载自西安川石,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

        评论