如何用 Python 做自動化測試
本文來自作者Vant在GitChat上分享 「如何用 Python 做自動化測試」
編輯 | 哈比
一、Selenium 環境部署
1. window 環境部署
1.1 當前環境
Win10 64 位系統;Python3.6.2(官方已經更新到了 3.6.4)
官方下載地址:https://www.python.org/downloads
Selenium 3.4.3;谷歌 59。
1.2 Python3 安裝部署
Python 的安裝接觸編程語言中很簡單的語言了。不需要繁瑣的 JDK,也不需要 SDK。直接到官網下載,配置環境就成功了。
首先到官網下載我們需要的 Python3 版本:
點進去直接下載:
1.3 配置環境變數
安裝好之後,我們就可以在文件夾看到我們下載好的 Python 文件了。
路徑為: D:python3.6.2。
現在我們去配置環境變數吧。
回到桌面,同時按下 WIN+R 鍵,打開 「運行」 對話框,輸入 sysdm.cpl,單擊 「確定」 按鈕:
選擇 「高級」 選項卡:
編輯當前路徑:
到這裡,我們配置環境就已經完成了,但是還是需要驗證我們是否成功安裝的。按 WIN+R,打開 「運行」 對話框,我們輸入 cmd:
輸入 python:
顯示版本信息就證明已經部署成功了,接下來我們就可以開始學習 python 了。
1.4 安裝 Selenium
現在我們就可以直接安裝 Selenium 了,重新打開 cmd 窗口,輸入:pip 查看是否存在 pip 命令:
如果不存在首先檢查自己的環境變數是否配置正確了;第二檢查 Python 文件夾下的 Scripts 文件夾下是否有 pip.exe 這個文件;如果這兩步都沒問題,就重新下載 python 文件。因為 pip 這個命令對我們來說是非常重要的。
接下來我們安裝 Selenium,在 cmd 窗口中輸入:pip install selenium:
1.5 驅動下載
這個是很多新手都會碰到的問題。其實也不用擔心,因為 Selenium 驅動對不同版本的瀏覽器也是不一樣的,所以很多人都會遇到這個問題了。
當前我使用的瀏覽器是谷歌瀏覽器。單擊這裡下載谷歌瀏覽器驅動。如果使用的火狐瀏覽器的,就需要先將瀏覽器版本降級了,所以我不推薦使用火狐瀏覽器。
我們進去選擇自己瀏覽器對應版本的驅動下載吧:
上面兩個驅動都是對谷歌 59 兼容的,下載完之後,我們將下載的文件放在 Python 的根目錄下就可以了。
接下來測試自己的 Selenium 是否可以啟動瀏覽器了,在 cmd 中輸入 Python:
然後輸入 from selenium import webdriver webdriver.Charome()
看到啟動瀏覽器,我們就已經成功安裝 Selenium 了 。
1.6 Pycharm 安裝
官方下載地址請單擊這裡
安裝完之後,我們需要輸入註冊碼:選擇 license,輸入 //idea.lanyus.com/ 這個地址,點擊 OK 就可以了。如果沒有輸入,也不用擔心,進入 pycharm 之後,點擊 Help-Register- 選擇 license:
這樣也是可以的。現在我們已經把前面所需要的條件都完成了。
選擇我們存放的路徑和項目命名:
我們重溫編程語言經典的輸出:
看到的結果,我們就成功了:
二、Selenium 的定位元素操作
我們在網上看到的很多方法,都是使用 Firefox 中的插件 firebug 工具對元素進行定位的,但是現在 Firefox 已經不再對 firebug 進行維護了,也就是 firebug 也即將需要從市場淘汰出去了。
所以,我們會在這裡使用的是谷歌的頁面定位的,其實也就很簡單的事。我們通過在頁面中按 F12 查看頁面就的元素,找到我們需要的元素,點擊右擊就可以看到我們需要定位的操作了。
Selenium 給我們提供了 8 種的定位元素方法,我們拿百度首頁作為例子。
2.1 find_element_by_id()
我們可以直接通過英文意思理解這個方法,通過 ID 查找元素,也就是使用頁面里的 id 屬性:id = 「」。我們先定位百度搜索框,在搜索框裡面輸入我們要查找的內容。
2.2 find_element_by_name()
這個定位的方法是通過查找名字的方式,對元素進行定位。我們在檢查元素的時候看到 name=」」,就可以使用這個方法了。
2.3 find_elements_by_class_name()
這個定位的方法是通過查找 class_name 的方式對元素進行定位,在檢查元素的時候看到 class=」」,就可以使用這個方法了。
2.4 find_element_by_tag_name()
這個定位的方法是通過元素的標籤屬性對元素進行定位,在檢查元素的時候查看元素的最前面的 input,但是這個定位方式有個不好的地方在於很多頁面都有同樣的標籤存在,所以我們定位的時候會很麻煩。
所以,這個方法我們不推薦使用。這個方法也是僅供參考。
實際上是會報錯的,因為 selenium 在定位的時候不清楚我們要找的是哪個元素。
我們如果一定要用這個方法的話,我們就需要清楚,我們定位的標籤的精準位置了。
2.5 find_element_by_link_text()
這個定位方式是通過查找頁面的文本信息進行定位。也就是我們看到頁面的信息去定位,例如:我們需要定位百度首頁的登錄按鈕,並點擊它。
2.6 find_element_by_partial_link_text()
這個方法的定位方式就是通過模糊文本信息查找元素,有些時候,我們希望定位到一個文本比較長的元素時,我們就可以通過這個方法去定位。
例如:定位百度首頁頁腳下的 「使用百度前必讀」,我們是輸入 「使用」。
這樣我們也是可以定位到該元素的。
2.7 find_element_by_xpath()
最後來說兩種最常用的定位方法,xpath 元素定位:通過查找元素的路徑去查找元素。
這兩個方法在使用上目前很廣泛,也很多人推薦使用的方法。這兩個很方便,因為瀏覽器已經幫我們做好準備了,我們只需要複製粘貼就可以了。
我們繼續定位搜索框。
這樣我們直接複製 xpath 路徑就可以了,這樣就可以解決我們會輸入錯誤元素的問題(註:在使用 xpath 的時候,最外面的雙引號改成單引號)
2.8 find_element_by_css_selector()
css 在操作上跟 xpath 差不多,也是通過複製粘貼的方式進行定位,不同在於 css 方法通過對頁面中的 css 元素定位的。
三 、Autolt 的應用
3.1 Autolt3 下載安裝
AutoIt 目前最新是 v3 版本,這是一個使用類似 BASIC 腳本語言的免費軟體 , 它設計用於 Windows GUI(圖形用戶界面) 中進行自動化操作。
它利用模擬鍵盤按鍵,滑鼠移動和窗口 / 控制項的組合來實現自動化任務。而這是其它語言不可能做到或無可靠方法實現的
官方下載:https://www.autoitscript.com/site/autoit/downloads。
點擊下載
點擊 next
點擊 I Agree
選擇安裝 64 位或者 32 位,我這裡選擇安裝的是 64 位的 Autolt,點擊 next
點擊 next
點擊 next
選擇安裝的路徑,點擊 install
這裡的 √ 去掉,點擊 finish,這樣就已經完成了。
3.2 Autolt3 使用
現在就來試試怎樣去操作,去到」 開始」 菜單。
我們可以看到 Autolt 有以下文件,我們主要來看三個文件:Autolt Window Info(x64)、Compile Script to .exe(x64)、SciTE Script Editor。
第一個文件是用來錄製我們操作的步驟,第二個文件是將我們的 .au 文件轉換成我們最終的 .exe 文件,第三個是編輯我們 .au 文件。這樣一來,我們就基本了解 Autolt 的使用流程了。
3.3 Autolt3 文件操作
首先我們需要打開 Autolt Window Info(x64) 這個文件:
在 pycharm 里創建一個命名為 「upload」 的 HTML 文件,
upload_Title
upload_file
將這段代碼複製粘貼,然後打開:
點擊選擇文件,會打開一個窗口:
現在我們使用 autolt 工具來定位窗口的位置,拖動圓點:
將移動到的位置的信息記錄下來,點擊 Control 可以看到信息窗口的 title 為 「打開」,標題的 Class 為 「#32770」。
文件名輸入框的 class 為 「Edit」,Instance 為 「1」 ,所以 ClassnameNN 為 「Edit1」。打開按鈕的 class 為 「Button」,Instance 為 「1」 ,所以 ClassnameNN 為 「Button1」。
這樣我們就可以編輯腳本信息了,打開 SciTE Script Editor 編輯腳本信息
;ControlFocus("title","text",controlID) Edit1=Edit instance 1 ControlFocus(" 打開 ", "","Edit1") ; Wait 10 seconds for the Upload window to appear WinWait("[CLASS:#32770]","",10) ; Set the File name text on the Edit field ControlSetText(" 打開 ", "", "Edit1", " E:\ upload.txt") Sleep(2000) ; Click on the Open button ControlClick(" 打開 ", "","Button1");
這樣的腳本有一個問題就是,我們的腳本路徑已經寫死了,這樣對於我們後期的自動化測試是行不通的。
所以我們必須將寫死的路徑改活。我們將 upload.txt 文件放在我們的自動化測試腳本裡面。
我們再去修改我們腳本的路徑 ControlSetText(「 打開 「, 「」, 「Edit1」, @WorkingDir & 「 fileupload.txt」)。
這段代碼的意思就是,打開當前文件夾上一個文件的相對路徑,這樣就可以防止我們的代碼寫死了。
這樣我們就編輯好了腳本信息了,保存我們的文件,會生成 .au 的文件,但是這個文件不是我們想要的,我們要得到的是 .exe 的文件,打開 Compile Script to .exe(x64) 文件,將 .au 的文件轉換成 .exe 文件就可以了。
點擊 Convert 就 ok 了,在當前文件夾下我們就可以看到生成的 .exe 文件了。
具體文件都放在這裡了。現在我們就可以去調用 upload.exe 文件了,新建命名為 uploadfile 的 python 文件。
from selenium import webdriver import os driver = webdriver.Chrome() #打開上傳功能頁面 file_path = "file:///" + os.path.abspath("upload.html") driver.get(file_path) #點擊打開上傳窗口 driver.find_element_by_name("file").click() #調用 upfile.exe 上傳程序 os.system(os.path.abspath("upload.exe")) driver.quit()
將這段代碼輸入進去,就可以調用了。這樣一來,我們的 Autolt 學習就完成了。更多的 Autolt 語法,可以去官網看詳細的文檔。
四、自動化測試框架的設計架構
五、Docker for Jenkins
![](https://pic.pimg.tw/zzuyanan/1488615166-1259157397.png)
![](https://pic.pimg.tw/zzuyanan/1482887990-2595557020.jpg)
TAG:Python |