?一.自動化概述
? ? ? ? ? ?通過測試工具或者其他手段圾浅,按照測試人員的預定計劃對軟件產品進行自動化測試,他是軟件測試的一個重要組成部分。
二.自動化的好處
? ? ? ? ? ?1.縮短測試周期? ?2.避免人為出錯? ?3.測試信息存儲? ?4.輕易獲取覆蓋率? 5.其他
? ? ? ? ? ?注:自動化測試的方向是對的事格,而且趨勢也是如此,但是有些自動化實現不了的還是會手動測試的
三.自動化的分類
? ? ? ? ? ? ?1.整體分類: (1).自動化功能測試? (2).自動化性能測試
? ? ? ? ? ? ?2.自動化功能測試 : (1).單元測試:程序員搞定? (2).功能測試? (3).接口測試:大中型項目或長期項目可以采用自動化測試
? ? ? ? ? ? ?3.自動化性能測試主要使用的工具:Loadrunner搞隐、Jmeter等驹愚,對軟件進行壓力測試、負載測試等等劣纲,因為這些無法用手工進行代替逢捺,所以必須自動化。為了測試一個web站點的服務能力癞季,需要模擬上千上萬的請求(比如打開瀏覽器訪問站點)劫瞳,人的速度是遠遠達不到這樣的操作的
四.自動化測試的前提條件
? ? ? ? ? ? 1.手動測試已經完成? ? ?2.項目周期比較長? 3.項目變更不大? ?4.自動化腳本復雜度比較低? ?5.可以重復利用
五.自動化場景
? ? ? ? ? ?1.回歸測試? ?2.冒煙測試? ?3.性能測試
六.web自動化常用工具及環(huán)境
? ? ? ? ? ? ? 1.自動化工具:Selenium
? ? ? ? ? ? ? 2.定位工具:css_selector、Xpath
? ? ? ? ? ? ? 3.環(huán)境準備:Firefox35绷柒、FirePath志于、FireBug、SeleniumIDE
七.Xpath
? ? ? ? ? ?1.概念:xml路徑語言废睦。xml:傳輸和存儲數據伺绽,HTML:顯示數據
? ? ? ? ? ?2.獲取元素
八.CSS選擇器
? ? ? ? 1.定義:用于選擇需要添加樣式的元素
? ? ? ? 2.語法
九.框架
? ? ? 1.定義:第三方已經完成某個特定功能的框子
? ? ? 2.好處:(1).自己實現太復雜? (2).使用框架可以專注于我們業(yè)務邏輯? (3).細節(jié)? (4).使用多奈应,穩(wěn)定性澜掩、擴展性好
十.Selenium
? ? ? ?1.原理: webdriver是按照server–client的經典設計模式設計的。
? ? ? ? ?server端就是remote server杖挣,可以是任意的瀏覽器输硝。當我們的腳本啟動瀏覽器后,該瀏覽器就是remote server程梦,它的職責就是等待client發(fā)送請求并做出相應;client端簡單說來就是我們的測試代碼橘荠,我們測試代碼中的一些行為屿附,比如打開瀏覽器,轉跳到特定的url等操作是以http請求的方式發(fā)送給被測試瀏覽器哥童,也就是remote server挺份;remote server接受請求,并執(zhí)行相應操作贮懈,并在response中返回執(zhí)行狀態(tài)匀泊、返回值等信息。
? ? ? ?2.環(huán)境搭建: (1).FireFox35 (2).python3.7 (3).selenium(2.48.0) (4).驅動器:谷歌/火狐下載
? ? ? ?3.selenium對瀏覽器的操作
? ? ? ?4.元素八大定位方式
? ? ?5.元素的操作
? ? ?6.多標簽切換:打開先標簽以后無法定新標簽的元素
? ? ? ? ? ? ? ? ? ? ? 獲取所有句柄:handles = driver.window_handlers
? ? ? ? ? ? ? ? ? ? ? 切換句柄: driver.switch_to_window(handles[n])? ? driver.switch_to.window(handles[n])
? ? ? ? ? ? ? ? ? ? ? 定位新標簽元素
? ? ? ?7.表單切換:獲取到表單 :form = driver.find_element_by_id('表單id')
? ? ? ? ? ? ? ? ? ? ? ? ? 切換表單: driver.switch_to.frame(form)
? ? ? ?8.彈出框的操作:進入警告框:alert = driver.switch_to.alert? ?接收:alert.accept()? ? 解散:alert.dismiss()
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?警告框輸內容:alert.send_keys("內容")
? ? ? ?9.下拉框: eles = driver.find_elements_by_id()
? ? ? 10.鼠標和鍵盤:1.鼠標: 導包:fromselenium.webdriverimportActionChains
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 懸浮: ActionChains(driver).move_to_element(ele).perform()
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 點擊鼠標右鍵: ActionChains(driver).context_click(ele).perform()
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 點擊鼠標左鍵: ActionChains(driver). double_click(ele).perform()
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?2.鍵盤: 導包:?from selenium.webdriver.common.keys import Keys
十一.瀏覽器等待
? ? ? ? ? ? ?注:使用優(yōu)先級:隱式等待->顯示等待->固定等待
? ? ? ? ? ? 1.固定等待:必須等到指定時間才繼續(xù)執(zhí)行
? ? ? ? ? ? 2.顯示等待:在設置時間內朵你,默認每隔一段時間檢測一次當前頁面元素是否存在各聘,如果超過設置時間檢測不到則拋出異常
? ? ? ? ? ? 3.隱式等待: 根據是件進行等待,等待特定時間? ?driver.implicitly_wait(n)
十二.腳本錄制-Selenium-IDE
? ? ? ? ? 1.打開火狐瀏覽器因為有插件,輸入http://www.baidu.com打開
? ? ? ? ?2. 導入python文件是如有錯誤則修改錯誤:ERROR