在自动化测试中,测试人员往往要准备测试环境,打开不计其数的窗口,有没有一种自动化的gui操作实现这一目的呢,肯定是有的。
目前最火的python脚本实现起来是最简单的,实现方式也很简单,仅仅利用pyautogui库就可以实现。而且,还可以跨平台。闲话不多说,先来看看这个东东吧。
pyautoGUI模块通过屏幕xy座标系统确定目标位置,控制鼠标和键盘发送虚拟击键和鼠标点击,完成点击按钮、填写表单等操作,通过pyautogui库,我们可以对鼠标键盘做很多事情,比如:确定鼠标当前位置,移动鼠标,鼠标点击,鼠标拖动,鼠标滚动,键盘输入,键盘组合键输入等。
下面通过我们公司的一个简单功能来看一下具体的功能实现步骤。
项目背景介绍:通过gui自动化,打开多个窗口,运行udpRecvServer软件,实现udp连接。
第一步肯定是安装所需要的库文件。
-
系统配置安装python3工作环境
1)更新程序源
sudo apt-get update
2)安装python管理工具 pip
sudo apt-get install python3-pip
3)配置 pip
sudo vim ~/.pip/pip.conf
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple/
4)pip3 install python3-xlib
5)sudo apt-get install scrot
6)sudo apt-get install python3-tk
7)sudo apt-get install python3-dev
8)sudo apt-get install python3-pil
9)pip3 install pyautogui
10)sudo apt-get install terminator //安装终端 -
运行脚本实现gui自动化功能
python3 teminal_autorun.py
当脚本运行完毕,桌面就会出现一个2*4的terminator界面,分别接受udp信息。如下图:
至于脚本的编写,也比较简答,详情如下:
#encoding :utf-8
import pyautogui
import time
import os
# 全屏打开terminator 端口,命名为 udpRecvServer debug terminal
#pyautogui.typewrite('terminator -m -T udpRecvServer debug terminal\n', 0.1)
time.sleep(0.5)
# 水平分屏
pyautogui.hotkey('ctrl','shift','o')
time.sleep(0.5)
pyautogui.hotkey('alt','up')
time.sleep(0.5)
# 水平分屏
pyautogui.hotkey('ctrl','shift','o')
time.sleep(0.5)
pyautogui.hotkey('alt','down')
time.sleep(0.5)
# 水平分屏
pyautogui.hotkey('ctrl','shift','o')
time.sleep(0.5)
pyautogui.hotkey('alt','up')
time.sleep(0.5)
pyautogui.hotkey('alt','up')
time.sleep(0.5)
pyautogui.hotkey('alt','up')
time.sleep(0.5)
# 竖直分屏
pyautogui.hotkey('ctrl','shift','e')
time.sleep(0.5)
pyautogui.hotkey('alt','down')
time.sleep(0.5)
# 竖直分屏
pyautogui.hotkey('ctrl','shift','e')
time.sleep(0.5)
pyautogui.hotkey('alt','down')
time.sleep(0.5)
# 竖直分屏
pyautogui.hotkey('ctrl','shift','e')
time.sleep(0.5)
pyautogui.hotkey('alt','down')
time.sleep(0.5)
# 竖直分屏
pyautogui.hotkey('ctrl','shift','e')
time.sleep(0.5)
pyautogui.hotkey('alt','up')
time.sleep(0.5)
pyautogui.hotkey('alt','up')
time.sleep(0.5)
pyautogui.hotkey('alt','up')
time.sleep(0.5)
# 进入1/8窗口
pyautogui.hotkey('alt','left')
time.sleep(0.5)
pyautogui.typewrite('./udpRecvServer 16\n', 0.1)
# 进入2/8窗口
pyautogui.hotkey('alt','right')
time.sleep(0.5)
pyautogui.typewrite('./udpRecvServer 17\n', 0.1)
# 进入3/8窗口
pyautogui.hotkey('alt','left')
time.sleep(0.5)
pyautogui.hotkey('alt','down')
time.sleep(0.5)
pyautogui.typewrite('./udpRecvServer 41\n', 0.1)
# 进入4/8窗口
pyautogui.hotkey('alt','right')
time.sleep(0.5)
pyautogui.typewrite('./udpRecvServer 42\n', 0.1)
# 进入5/8窗口
pyautogui.hotkey('alt','left')
time.sleep(0.5)
pyautogui.hotkey('alt','down')
time.sleep(0.5)
pyautogui.typewrite('./udpRecvServer 43\n', 0.1)
# 进入6/8窗口
pyautogui.hotkey('alt','right')
time.sleep(0.5)
pyautogui.typewrite('./udpRecvServer 44\n', 0.1)
# 进入7/8窗口
pyautogui.hotkey('alt','left')
time.sleep(0.5)
pyautogui.hotkey('alt','down')
time.sleep(0.5)
pyautogui.typewrite('./udpRecvServer 45\n', 0.1)
# 进入8/8窗口
pyautogui.hotkey('alt','right')
time.sleep(0.5)
pyautogui.typewrite('./udpRecvServer 46\n', 0.1)
到此为止,一个简单的GUI自动化功能已经实现!!!