川石教育
全国咨询热线:136-9172-9932
  1. 首页 > 资讯与干货 > IT资讯

PythonGUI必备自动化测试工具

作者:川石学院 日期:2022-09-06 11:37:25 点击数:

一天一个关于测试知识点,5分钟内讲解你最关心的软件测试问题,今天就接着来谈谈关于软件测试中的“PythonGUI必备自动化测试工具”。

JavaScript 在 selenium 自动化中的应用(图1)

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

  1. 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')

  2. 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 = [0x23, 0x12, 0x26, 0x26, 0x18, 0x11, 0x18, 0x13, 0x26, 0x20, 0x2a]

  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")

  3. 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()


相关文章
  • 亚马逊运营成功转行软件测试,薪资13K表示很满意!2022-09-06 11:37:25
  • 西安川石的兰朋友喊你来当他的学弟学妹啦!2022-09-06 11:37:25
  • 国外的月亮也不一定比国内测试猿的年薪美~2022-09-06 11:37:25
  • 建筑工程专业朱同学成功转行为软件测试人!2022-09-06 11:37:25
  • 财务管理专业转行软件测试月薪甩会计几条街!2022-09-06 11:37:25
  • 只有技术沉淀才能成功上岸,深圳就业薪资13K!2022-09-06 11:37:25
  • 薪资11K!实现自我价值,从掌握一门IT技术开始...2022-09-06 11:37:25
  • 文科生转行软件测试照样拿下高薪15K!2022-09-06 11:37:25
  • 恭喜罗同学喜提19.5K,成功入行软件测试!2022-09-06 11:37:25
  • 毕业1年,迷茫的他最终选择转行软件测试2022-09-06 11:37:25