基于pyautogui 实现跨平台GUI自动化应用

在自动化测试中,测试人员往往要准备测试环境,打开不计其数的窗口,有没有一种自动化的gui操作实现这一目的呢,肯定是有的。

目前最火的python脚本实现起来是最简单的,实现方式也很简单,仅仅利用pyautogui库就可以实现。而且,还可以跨平台。闲话不多说,先来看看这个东东吧。

pyautoGUI模块通过屏幕xy座标系统确定目标位置,控制鼠标和键盘发送虚拟击键和鼠标点击,完成点击按钮、填写表单等操作,通过pyautogui库,我们可以对鼠标键盘做很多事情,比如:确定鼠标当前位置,移动鼠标,鼠标点击,鼠标拖动,鼠标滚动,键盘输入,键盘组合键输入等。

下面通过我们公司的一个简单功能来看一下具体的功能实现步骤。

项目背景介绍:通过gui自动化,打开多个窗口,运行udpRecvServer软件,实现udp连接。

第一步肯定是安装所需要的库文件。

  1. 系统配置安装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 //安装终端

  2. 运行脚本实现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自动化功能已经实现!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章