本文主要講解關於selenium自動化測試框架的入門知識點,教你們如何搭建selenium自動化測試環境,如何用selenium+python+unittest實現web頁面的自動化測試,先來看看selenium、unittest是什麼。javascript
Selenium 是用於測試 Web 應用程序用戶界面 (UI) 的經常使用框架。它是一款用於運行端到端功能測試的超強工具。您可使用多個編程語言編寫測試,而且 Selenium 可以在一個或多個瀏覽器中執行這些測試,同時支持全部基於web 的管理任務自動化。
unittest是單元測試框架,不只適用於單元測試,還能夠適用WEB自動化測試用例的開發與執行,該測試框架可組織執行測試用例,而且提供了豐富的斷言方法,斷言,其實就是對測試結果進行校驗,每個測試用例都有一個指望結果,實際結果跟指望結果不一致,說明執行測試用例不經過,自動化測試也同樣,須要對測試結果進行校驗,校驗成功,說明用例已經經過,最終生成測試結果。css
安裝python:html
下載連接:https://www.python.org/getit/java
安裝python編譯器pycharmpython
http://www.jetbrains.com/pycharm/download/index.html#section=windowsweb
安裝selenium模塊:chrome
win+r 輸入cmdnpm
python -m pip install selenium編程
假如用的是Chrome瀏覽器,還須要下載chromedriver.exe,chromedriver版本與支持的Chrome瀏覽器版本對應以下:
windows
下載連接:http://npm.taobao.org/mirrors/chromedriver/
下載完成後,拷貝chromedriver.exe到Chrome瀏覽器安裝目錄下:
隨後配置環境變量:
好了,環境已經搭建好了,咱們開始寫測試用例,來看一下對百度頁面寫一個簡單的自動化測試腳本
#coding=utf-8 #百度demo from selenium import webdriver import time #單元測試框架,使用該模塊,咱們能夠對用例進行組織和運行,例如以下的BaiduTestCase類繼承unittest.TestCase,該類執行會把test開頭的方法當成一個測試用例去執行 import unittest class BaiduTestCase(unittest.TestCase): def setUp(self): print('開始執行測試用例:') url = 'https://www.baidu.com' self.driver = webdriver.Chrome()#選擇谷歌瀏覽器 self.driver.get(url)#打開百度頁面 def test_bubutton(self): self.driver.find_element_by_id('kw').clear() self.driver.find_element_by_id('kw').send_keys('軟件測試')#搜索框輸入內容 self.driver.find_element_by_id('su').click()#點擊百度按鈕 time.sleep(2) self.driver.save_screenshot('D:/baidu.png')#截圖 def tearDown(self): print('一條用例執行完成。') self.driver.quit()#退出瀏覽器 if __name__=='__main__': unittest.main()
經過上面的一段代碼咱們就能夠實現跳轉到百度頁面,輸入‘軟件測試’,點擊百度按鈕而且搜索,設置停留在搜索結果頁面2秒鐘,隨後截圖放到設置的路徑,是否是以爲挺簡單的呢,可是想要學習更多的自動化測試知識,仍是須要更多地熟悉selenium、unittest的api。
一、id定位: find_element_by_id()
舉例:進入瀏覽器,按f12,定位元素id以下如步驟:
二、name定位: find_element_by_name()
三、class定位:find_element_by_class_name()
四、link定位:find_element_by_link_text()
五、partial_link定位:find_element_by_partial_link_text()
六、xpath定位:find_element_by_xpath()
七、CSS定位:find_element_by_css_selector()
操做方法:
clear 清除元素的內容
send_keys 模擬按鍵輸入
click 點擊元素
submit 提交表單
size 獲取元素的尺寸
text 獲取元素的文本
get_attribute(name) 獲取屬性值
location 獲取元素座標,先找到要獲取的元素,再調用該方法
page_source 返回頁面源碼
driver.title 返回頁面標題
current_url 獲取當前頁面的URL
is_displayed() 設置該元素是否可見
is_enabled() 判斷元素是否被使用
is_selected() 判斷元素是否被選中
tag_name 返回元素的tagName
context_click(elem) 右擊鼠標點擊元素elem,另存爲等行爲
double_click(elem) 雙擊鼠標點擊元素elem,地圖web可實現放大功能
drag_and_drop(source,target) 拖動鼠標,源元素按下左鍵移動至目標元素釋放
move_to_element(elem) 鼠標移動到一個元素上
click_and_hold(elem) 按下鼠標左鍵在一個元素上
perform() 在經過調用該函數執行ActionChains中存儲行爲
send_keys(Keys.ENTER) 按下回車鍵
send_keys(Keys.TAB) 按下Tab製表鍵
send_keys(Keys.SPACE) 按下空格鍵space
send_keys(Kyes.ESCAPE) 按下回退鍵Esc
send_keys(Keys.BACK_SPACE) 按下刪除鍵BackSpace
send_keys(Keys.SHIFT) 按下shift鍵
send_keys(Keys.CONTROL) 按下Ctrl鍵
send_keys(Keys.ARROW_DOWN) 按下鼠標光標向下按鍵
send_keys(Keys.CONTROL,‘a’) 組合鍵全選Ctrl+A
send_keys(Keys.CONTROL,‘c’) 組合鍵複製Ctrl+C
send_keys(Keys.CONTROL,‘x’) 組合鍵剪切Ctrl+X
send_keys(Keys.CONTROL,‘v’) 組合鍵粘貼Ctrl+V
assertLocation(判斷當前是在正確的頁面)、assertTitle(檢查當前頁面的 title 是否正確)、assertValue(檢查 input 的值, checkbox 或 radio,有值爲」on」無爲」off」)、 assertSelected(檢查 select 的下拉菜單中選中是否正確)、 assertSelectedOptions(檢查下拉菜單中的選項的是否正確)、 assertText(檢查指定元素的文本)、 assertTextPresent(檢查在當前給用戶顯示的頁面上是否有出現指定的文本)、 assertTextNotPresent(檢查在當前給用戶顯示的頁面上是否沒有出現指定的文本)、 assertAttribute(檢查當前指定元素的屬性的值)、 assertTable(檢查 table 裏的某個 cell 中的值)、 assertEditable(檢查指定的 input 是否能夠編輯)、 assertNotEditable(檢查指定的 input 是否不能夠編輯)、 assertAlert(檢查是否有產生帶指定 message 的 alert 對話框)、 verifyTitle驗證預期的頁面標題。 verifyTextPresent驗證預期的文本是否在頁面上的某個位置。 verifyElementPresent驗證預期的 UI 元素,它的 HTML 標籤的定義,是否在當前網頁上。 verifyText覈實預期的文本和相應的 HTML 標籤是否都存在於頁面上。 verifyTable驗證表的預期內容。 waitForPageToLoad 暫停執行,直到預期的新的頁面加載