如何用 Python 作自動化測試

1、Selenium 環境部署

1. window 環境部署

1.1 當前環境

Win10 64 位系統;Python3.6.2(官方已經更新到了 3.6.4)css

官方下載地址:https://www.python.org/downloadshtml

Selenium 3.4.3;谷歌 59。python

1.2 Python3 安裝部署

Python 的安裝接觸編程語言中很簡單的語言了。不須要繁瑣的 JDK,也不須要 SDK。直接到官網下載,配置環境就成功了。web

首先到官網下載咱們須要的 Python3 版本:chrome

點進去直接下載:npm

1.3 配置環境變量編程

安裝好以後,咱們就能夠在文件夾看到咱們下載好的 Python 文件了。bootstrap

路徑爲: D:\python3.6.2。瀏覽器

如今咱們去配置環境變量吧。架構

回到桌面,同時按下 WIN+R 鍵,打開 「運行」 對話框,輸入 sysdm.cpl,單擊 「肯定」 按鈕:

選擇 「高級」 選項卡:

編輯當前路徑:

到這裏,咱們配置環境就已經完成了,可是仍是須要驗證咱們是否成功安裝的。按 WIN+R,打開 「運行」 對話框,咱們輸入 cmd:

輸入 python:

1.4 安裝 Selenium

如今咱們就能夠直接安裝 Selenium 了,從新打開 cmd 窗口,輸入:pip  查看是否存在 pip 命令:

若是不存在首先檢查本身的環境變量是否配置正確了;第二檢查 Python 文件夾下的 Scripts 文件夾下是否有 pip.exe 這個文件;若是這兩步都沒問題,就從新下載 python 文件。由於 pip 這個命令對咱們來講是很是重要的。

接下來咱們安裝 Selenium,在 cmd 窗口中輸入:pip install selenium:

1.5 驅動下載

這個是不少新手都會碰到的問題。其實也不用擔憂,由於 Selenium 驅動對不一樣版本的瀏覽器也是不同的,因此不少人都會遇到這個問題了。

當前我使用的瀏覽器是谷歌瀏覽器。單擊這裏下載谷歌瀏覽器驅動。若是使用的火狐瀏覽器的,就須要先將瀏覽器版本降級了,因此我不推薦使用火狐瀏覽器。

咱們進去選擇本身瀏覽器對應版本的驅動下載吧(http://npm.taobao.org/mirrors/chromedriver/):

上面兩個驅動都是對谷歌 59 兼容的,下載完以後,咱們將下載的文件放在 Python 的根目錄下就能夠了。

 

 

 接下來測試本身的 Selenium 是否能夠啓動瀏覽器了,在 cmd 中輸入 Python:

 

而後輸入 from selenium import webdriver webdriver.Charome()

 

 看到啓動瀏覽器,咱們就已經成功安裝 Selenium 了 。

1.6  Pycharm 安裝

官方下載地址請單擊這裏

安裝完以後,咱們須要輸入註冊碼:選擇 license,輸入 http://idea.lanyus.com/ 這個地址,點擊 OK 就能夠了。若是沒有輸入,也不用擔憂,進入 pycharm 以後,點擊 Help-Register- 選擇 license:

這樣也是能夠的。如今咱們已經把前面所須要的條件都完成了。

選擇咱們存放的路徑和項目命名:

咱們重溫編程語言經典的輸出:

咱們能夠點擊上面的 Run 或者使用快捷鍵 Shift+Ctrl+F10 能夠直接看到結果了:

看到的結果,咱們就成功了:

2、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 文件,

 <!DOCTYPE html>    <html lang="en">    <head>    <meta charset="UTF-8">    <title>upload_Title</title>    <link href="http://cdn.bootcss.com/bootstrap/3.3.0/css/bootstrap.min.css" rel="stylesheet" />    </head>    <body>    <div class="row-fluid">    <div class="span6 well">    <h3>upload_file</h3>    <input type="file" name="file" />    </div>    </div>    </body>    <script src="http://cdn.bootcss.com/bootstrap/3.3.0/css/bootstrap.min.js"></script>    </html>
將這段代碼複製粘貼,而後打開:

點擊選擇文件,會打開一個窗口:

如今咱們使用 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 & 「 \file\upload.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 語法,能夠去官網看詳細的文檔。

 

4、自動化測試框架的設計架構

5、Docker for Jenkins

相關文章
相關標籤/搜索