基於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自動化功能已經實現!!!

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