在自動化測試中,測試人員往往要準備測試環境,打開不計其數的窗口,有沒有一種自動化的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自動化功能已經實現!!!