使用Python+selenium實現第一個自動化測試腳本


使用Python+selenium實現第一個自動化測試腳本

原blog

一,安裝Python.

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

python
安裝后點擊開始菜單,在菜單最上面能找到IDLE.
IDLE是python自帶的shell, 點擊打開, 即可開始編寫python腳本了.

IDLE

二,安裝selenium

上面python已安裝完成,接下來安裝selenium.
安裝selenium之前需要安裝必要工具. setuptools
安裝后,(比如zip包形式安裝),進入解壓的目錄,在命令行執行如下命令即可安裝.


   
   
  
  
          
python setup.py install

再然后安裝pip
https://pypi.python.org/pypi/pip
同樣,安裝tar或解壓包,進入目錄cmd執行python setup.py install即可安裝

安裝selenium
上面2個工具安裝好后,安裝selenium只需在命令行進入python安裝路徑Script目錄下,執行


   
   
  
  
          
pip install -U selenium

pip install -U selenium

install ok

即可自動安裝.
完成安裝后在IDLE輸入


   
   
  
  
          
from selenium import webdriver

測試安裝

如果沒報錯即代表安裝成功.

三,注意事項

  1. selenium3.0 需要獨立安裝FireFox驅動.解壓后放在python安裝路徑下即可.

  2. geckodriver驅動要求FireFox瀏覽器必須48版本以上,如果不是,更新FireFox.

  3. 如果用Java開發,需注意3.0必須用JDK1.8版本才行.

  4. 同樣谷歌的驅動,沒FQ只能使用阿里的鏡像了.

注意阿里的鏡像對應的谷歌的版本:

Alt text

四,第一個自動化腳本
完成上面所有准備工作,就可以開始第一個自動化腳本的編寫了.
打開IDLE,通過快捷鍵CTRL+N打開一個新窗口,在新窗口輸入以下代碼:


   
   
  
  
          
# coding = utf-8
from selenium import webdriver
browser = webdriver.Firefox()
browser.get( "http://www.baidu.com")
browser.find_element_by_id( "kw").send_keys( "selenium")
browser.find_element_by_id( "su").click()
browser.quit()

這里如果關的過快,就需要將browser.quit()給去掉.不然看不見操作

寫完腳本后腳本頁執行F5快捷鍵運行腳本,可以看到腳本啟動FireFox瀏覽器進入百度頁面,輸入”selenium”點擊搜索按鈕,第一個腳本即完成了.

代碼解析:


   
   
  
  
          
# coding = utf-8
(為了防止亂碼問題,以及在程序中添加中文注釋,把編碼統一成UTF -8;)
from selenium import webdriver
(導入selenium的webdriver包,導入webdriver包后才能使用webdriver API進行自動化腳本開發.)
browser = webdriver.Firefox()
(將控制的webdriver的Firefox賦值給browser,獲得了瀏覽器對象才可以啟動瀏覽器;)
browser.get( "http://www.baidu.com")
(獲得瀏覽器對象后,通過get()方法,向瀏覽器發送網址;)
browser.find_element_by_id( "kw").send_keys( "selenium")
(通過id=kw定位到百度的輸入框,並通過鍵盤方法send_keys()向輸入框輸入selenium;)
browser.find_element_by_id( "su").click()
(通過id=su定位到搜索按鈕,並向按鈕發送單擊事件(click());)
browser.quit()
(退出並關閉窗口的每一個相關的驅動程序.)

名詞解釋:
1.


   
   
  
  
          
find_element_by_id()

我們可以直接通過英文意思理解這個方法,通過ID查找元素,也就是使用頁面里的id屬性:id=”“. 我們先定位百度搜索框,在搜索框里輸入我們要查找的內容.

Alt text

2.


   
   
  
  
          
find_element_by_name()

這個定位的方法是通過查找名字的方式,對元素進行定位,我們在檢查元素的時候看到name=”“,就可以使用這個方法了.

Alt text
3.


   
   
  
  
          
find_elements_by_class_name()

這個定位的方法是通過查找class_name的方式對元素進行定位,在檢查元素的時候看到class=”“,就可以使用這個方法了.

Alt text
4.


   
   
  
  
          
find_element_by_tag_name()

這個定位的方法是通過元素的標簽屬性對元素進行定位,在檢查元素的時候查看元素的最前面的input,但是這個定位方式有個不好的地方在於很多頁面都有同樣的標簽存在,所以我們定位的時候會很麻煩.
所以,這個方法我們不推薦使用. 這個方法也是僅供參考.

Alt text
實際上是會報錯的,因為selenium在定位的時候不清楚我們要找的是哪個元素.

Alt text
我們如果一定要用這個方法的花,我們就需要清楚,我們定位的標簽的精准位置.
5.


   
   
  
  
          
find_element_by_link_text()

這個定位方式是通過查找頁面的文本信息進行定位. 也就是我們看到頁面的信息去定位, 例如:我們需要定位百度首頁的登錄按鈕.並點擊它.

Alt text

Alt text
6.


   
   
  
  
          
find_element_by_partial_link_text()

這個方法的定位方式就是通過模糊文本信息查找元素,有些時候,我們希望定位到一個文本比較長的元素時,我們就可以通過這個方法去定位.
例如: 定位百度首頁頁腳下的”使用百度前必讀”, 我們是輸入”使用”.


   
   
  
  
          
from selenium import webdriver
driver = webdriver.Chrome()
driver.get( "http://www.baidu.com")
driver.find_element_by_partial_link_text( "使用").click()

這樣我們也是可以定位到該元素的.
7.


   
   
  
  
          
find_element_by_xpath()

最后來說兩種最常用的定位方法,xpath元素定位:通過查找元素的路徑去查找元素.
這兩個方法在使用上目前很廣泛,也很多人推薦使用.這兩個很方便,因為瀏覽器已經幫我們做好准備了,我們只需要復制粘貼就可以了.
我們繼續定位搜索框.

Alt text
這樣我們直接復制xpath路徑就可以了,這樣就可以解決我們會輸入錯誤元素的問題(注:在使用xpath的時候,最外面的雙引號改成單引號.

Alt text
8.


   
   
  
  
          
find_element_by_css_selector()

css在操作上跟xpath差不多,也是通過復制粘貼的方式進行定位,不同在於css方法通過對頁面中的css元素定位的.

Alt text

之上8條的原blog,內涵有其它的腳本界面工具Autolt的介紹

假設測試test1.給定登錄頁面的username和password,並點擊登錄按鈕,進行自動登錄測試
代碼如下:

Alt text
就可以以這條腳本運行,而.py文件保存到桌面也可以直接雙擊運行(首先要安裝python)

Alt text

加入再測試其它功能可以根據獲取id,name等繼而進行測試操作.上面只是基本測試.
之后需要進行測試案例的編寫,返回測試數據. 以及與ones.ai自動化測試連接.

ones的對接文檔

通用說明

流水線(pipeline)

參數名 值類型 取值范圍 默認值 取值例子 說明
uuid string len=8 pipeline uuid
name string len<=32 pipeline 名稱
owner string len=8 pipeline 創建者 uuid
create_time int64 pipeline 創建時間(秒)
project object pipeline 綁定的 project 信息
 uuid string len=8 項目 uuid
 name string 項目名稱
configure_statuses object pipeline 配置狀態
 scm object 代碼倉庫集成配置狀態,參考下方說明
 ci object 持續集成配置狀態,參考下方說明
 lint object 代碼質量檢查配置狀態,參考下方說明
 test object 自動化測試配置狀態,參考下方說明
 artifact object 部署結果關聯配置狀態,參考下方說明
branches array pipeline 下的已知分支列表,參考下方說明
branch_sprint_bindings array pipeline 下分支與迭代的綁定列表,參考下方說明
sprint_binding_rule string pipeline 與項目下迭代的自動綁定規則, 參考下方說明

API 說明

1. pipeline 回調

創建一個 pipeline

URL

https://api.ones.ai/project/team/:teamUUID/pipeline/:pipelineUUID/callback

HTTP Method

POST

調用權限

傳值方式

JSON

參數說明


   
   
  
  
          
{
"action": "stage",
"stage": {
"type": "test", //stage 類型:start,finish,lint,test
"name": "test", //stage 名稱, eg: "test"
"start_time": start_time, //階段的開始時間,單位秒
"finish_time": finish_time, //階段的結束時間,單位秒
"status": status, //stage 狀態:unknown,success,failure
},
"payload": {
"test": {
"executions": [{
"language": "python", // 測試語言
"framework": "selenium", // 測試框架名
"id": "", // 執行結果的 ID
"start_time": "" // 開始執行的時間,單位毫秒
"finish_time": "" // 執行完成的時間,單位毫秒
"name": "用例名",
"description": "用例描述",
"result": "執行結果", //success, failure, error, skip, unexpected_success, expected_failure
"message": "錯誤消息"
}]
}
}
}

返回的HTTP status code

狀態碼 說明
200 成功
400 請求結構錯誤
403 token 無效,無權限
500 服務器錯誤
801 參數錯誤

返回JSON

參數名 值類型 取值范圍 默認值 取值例子 說明
pipeline object 參考頂端 pipeline 模型


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM