Home >> Blog >> 在 Python 中使用 PyAutoGUI 自動化 UI 測試

在 Python 中使用 PyAutoGUI 自動化 UI 測試

一種快速簡便的回歸測試 UI 的方法

當沒有必要的保障措施來保證質量控制時,發布產品的新版本可能會帶來壓力。假設您的產品具有用戶界面 (UI),則建議在每次發布之前進行 UI 測試。

毫無疑問,您已經進行了集成測試,並且您確信系統將端到端工作,包括 UI。但是,根據您所從事的SEO搜尋引擎優化行業以及您的應用程式的重要性,您可能希望確保並證明它有效。鑑於這是您每次發布應用程式時都希望重複的內容,您可能希望自動執行此類測試。

一種快速簡便的方法是利用一個名為 PyAutoGUI 的 Python 庫,它允許您執行自動化 UI 測試。

在 Python 中使用 PyAutoGUI 自動化 UI 測試

PyAutoGUI 簡介

PyAutoGUI 本質上是一個 Python 包,可以在 Windows、MacOS X 和 Linux 上運行,它提供了模擬滑鼠游標光標移動和點擊以及鍵盤按鈕按下的能力。

您可以在他們的主頁上找到有關該軟體包的更多資訊,包括如下所示的快速概覽:

import pyautogui
screenWidth, screenHeight = pyautogui.size()
currentMouseX, currentMouseY = pyautogui.position()
pyautogui.moveTo(100, 150)
pyautogui.click()
pyautogui.moveRel(None, 10) # 將滑鼠游標向下移動 10 個像素
pyautogui.doubleClick ()
pyautogui.moveTo(500, 500, duration=2, tween=pyautogui.easeInOutQuad) # 使用補間/緩動函數將滑鼠游標移動超過 2 秒。
pyautogui.typewrite('Hello world!', interval=0.25) # 在每個鍵之間輸入四分之一秒
pyautogui.press('esc')
pyautogui.keyDown('shift')
pyautogui.press(['left', 'left', 'left', 'left', 'left', 'left'])
pyautogui.keyUp('shift')
pyautogui.


範例用法

為了看看這在真實環境中是如何工作的,讓我們快速組合一個範例 python 腳本。我們首先假設我們的應用程式 Firefox(作為範例)已部署到測試 Windows 10 機器上,並且我們希望自動測試 UI 的某些方面。

首先要做的是導入包並捕獲我們螢幕的大小。我們還可以假設 Windows 任務欄將始終位於螢幕底部,因此我們可以繼續並啟動“開始”菜單按鈕。

import pyautogui as gui, time
screenWidth, screenHeight = gui.size()
gui.moveTo(0,screenHeight)
gui.click()


執行上述代碼後,我們可以搜索 Firefox,然後啟動它。

gui.typewrite('Firefox', interval=0.25)
gui.press('enter')

我添加了輸入每個字母的間隔,以適應速度較慢的機器。然後我們需要確保窗口最大化到螢幕。執行此操作的 Windows 快捷方式是 Alt + Space,然後是 x。

time.sleep(2) #給 2 秒讓 firefox 啟動
gui.keyDown('alt')
gui.press(' ')
gui.press('x')
gui.keyUp('alt')


此時,我們可以開始添加我們希望我們的工具進行測試的功能。例如,我們可能想要測試打開一個新選項卡並輸入一個網站。為此,我們想知道某些位置在螢幕上的位置。為了識別它們,我們可以在後台運行以下腳本,並在我們將滑鼠游標懸停在我們所追求的目標上時查看位置輸出:

import pyautogui as gui, time
def identifyloc():
while True:
currentMouseX, currentMouseY = gui.position()
print(currentMouseX,currentMouseY) time.sleep
(3)
identifyloc()

使用它,我確定“新標籤”按鈕位於 (250,22) 位置,地址欄位於 (371, 51)。因此,我可以使用以下代碼:

gui.click(250,22)
gui.click(371,51)
gui.typewrite('https://medium.com/financeexplained')
gui.press('enter')


然後我們可以繼續添加任意數量的測試場景。當然,在所有這些執行結束時,仍然需要有人查看日誌和 UI 以確保我們沒有遇到任何錯誤。

把它們放在一起:

import pyautogui as gui, time
def testfirefox():
screenWidth, screenHeight = gui.size()
gui.moveTo(0,screenHeight)
gui.click()
gui.typewrite('Firefox', interval=0.25)
gui.press(' enter') time.sleep
(2)
gui.keyDown('alt')
gui.press(' ')
gui.press('x')
gui.keyUp('alt')
gui.click(250,22)
gui. click(371,51)
gui.typewrite(' https://medium.com/financeexplained' )
gui.press('enter')
def identifyloc():
while True:
currentMouseX, currentMouseY = gui.position()
print(currentMouseX,currentMouseY) time.sleep
(3)
測試火狐()

在 Python 中使用 PyAutoGUI 自動化 UI 測試