Selenium自動化測試框架
1.什么是框架?
框架(framework)是一個框子——指其約束性,也是一個架子——指其支撐性。是一個基本概念上的結(jié)構(gòu),用于去解決或者處理復雜的問題。
框架是整個或部分系統(tǒng)的可重用設(shè)計,表現(xiàn)為一組抽象構(gòu)件及構(gòu)件實例間交互的方法;另一種定義認為,框架是可被應(yīng)用開發(fā)者定制的應(yīng)用骨架。前者是從應(yīng)用方面而后者是從目的方面給出的定義。
框架,其實就是某種應(yīng)用的半成品,就是一組組件,供你選用完成你自己的系統(tǒng)。簡單說就是使用別人搭好的舞臺,你來做表演。
2.為什么使用框架?
1)自己從頭實現(xiàn)太復雜
2)使用框架能夠更專注于業(yè)務(wù)邏輯,加快開發(fā)速度
3)框架的使用能夠處理更多細節(jié)問題
4)使用人數(shù)多,穩(wěn)定性,擴展性好
Selenium工作原理
webdriver工作原理
selenium環(huán)境搭建
.材料:
1)python3.7
2)Firefox35(大于43)
3)selenium2框架
穩(wěn)定版 2.48.0 (pip install selenium==2.48.0)
4)瀏覽器驅(qū)動
chrome
ie
Selenium IDE
什么是Selenium-IDE?
Selenium的IDE(集成開發(fā)環(huán)境)是一個易于使用的Firefox插件,用于開發(fā)Selenium測試案例。它提供了一個圖形用戶界面,用于記錄使用Firefox瀏覽器,用來學習和使用Selenium用戶操作,但它只能用于只用Firefox瀏覽器不支持其它瀏覽器
1.環(huán)境安裝
firefox官網(wǎng)
2.IDE功能簡介
1.文件:創(chuàng)建、打開和保存測試案例和測試案例集。編輯:復制、粘貼、刪除、撤銷和選擇測試案例中的所有命令。Options : 用于設(shè)置seleniunm IDE。
2.用來填寫被測網(wǎng)站的地址。
3.速度控制:控制案例的運行速度。
4.運行所有:運行一個測試案例集中的所有案例。
5.運行:運行當前選定的測試案例。
6.暫停/恢復:暫停和恢復測試案例執(zhí)行。
7.單步:可以運行一個案例中的一行命令。
8.錄制:點擊之后,開始記錄你對瀏覽器的操作。
9.案例集列表。
10.測試腳本;table標簽:用表格形式展現(xiàn)命令及參數(shù)。source標簽:用原始方式展現(xiàn),默認是HTML語言格式,也可以用其他語言展示。
11.查看腳本運行通過/失敗的個數(shù)。
12.當選中前命令對應(yīng)參數(shù)。
13.日志/參考/UI元素/Rollup
Selenium API基礎(chǔ)
1.瀏覽器驅(qū)動對象
1)庫的導入
from selenium import webdriver
2)創(chuàng)建瀏覽器對象
driver = webdriver.xxx()
使用dir(driver)查看方法
3)瀏覽器尺寸相關(guān)操作
maximize_window() 最大化
get_window_size() 獲取瀏覽器尺寸
set_window_size() 設(shè)置瀏覽器尺寸
4)瀏覽器的關(guān)閉操作
close() 關(guān)閉當前標簽/窗口
quit() 關(guān)閉所有標簽/窗口
頁面請求操作
driver.get(url) 請求某個url對應(yīng)的響應(yīng)
refresh() 刷新頁面操作
back() 回退到之前的頁面
forward() 前進到之后的頁面
獲取斷言信息
0)什么是斷言?
斷言是編程術(shù)語,表示為一些布爾表達式,程序員相信在程序中的某個特定點該表達式值為真,可以在任何時候啟用和禁用斷言驗證,因此可以在測試時啟用斷言而在部署時禁用斷言。
1)獲取斷言信息的操作
current_url 獲取當前訪問頁面url
title 獲取當前瀏覽器標題
get_screenshot_as_png() 保存圖片
get_screenshot_as_file(file) 直接保存
page_source 網(wǎng)頁源碼
元素的定位
1)元素定位方法的分類(調(diào)用方式):
1.直接調(diào)用型(推薦方式)
driver.find_element_by_xxx(value)
2.使用By類型(需要導入By)
from selenium.webdriver.common.by import By
driver.find_element(By.xxx,value)
2)元素定位方法的分類(按定位方式):
八種定位方式的示例:
1. driver.find_element_by_xpath(value)
2. driver.find_element_by_css_selector(value)
3. driver.find_element_by_id(value)
4. driver.find_element_by_name(value)
5. driver.find_element_by_class_name(value)
6. driver.find_element_by_tag_name(value)
7. driver.find_element_by_link_text(value)
8. driver.find_element_by_partial_link_text(value)
元素的操作
對元素的相關(guān)操作,一般要先獲取到元素,再調(diào)用相關(guān)方法
element = driver.find_element_by_xxx(value)
1)點擊和輸入
點擊操作
element.click()
清空/輸入操作(只能操作可以輸入文本的元素)
element.clear() 清空輸入框
element.send_keys(data) 輸入數(shù)據(jù)
案例:
1.打開百度搜索 2.搜索關(guān)鍵字 selenium
3.清空 4.搜索python
Selenium API高級
1.多標簽之間的切換
場景:有的時候點擊一個鏈接,新頁面并非由當前頁面跳轉(zhuǎn)過去,而是新開一個頁面打開,這種情況下,計算機需要識別多標簽或窗口的情況。
1)獲取所有窗口的句柄
handles = driver. window_handles
調(diào)用該方法會得到一個列表,在selenium運行過程中的每一個窗口都有一個對應(yīng)的值存放在里面。
2)通過窗口的句柄進入的窗口
driver.switch_to_window(handles[n])
driver.switch_to.window(handles[n])
通過窗口句柄激活進入某一窗口
多表單切換
在網(wǎng)頁中,表單嵌套是很常見的情況,尤其是在登錄的場景
1)什么是多表單?
實際上就是使用iframe/frame,引用了其他頁面的鏈接,真正的頁面數(shù)據(jù)并沒有出現(xiàn)在當前源碼中,但是在瀏覽器中我們看到,簡單理解可以使頁面中開了一個窗口顯示另一個頁面
2)處理方法
直接使用id值切換進表單
driver.switch_to.frame(value)/driver.switch_to_frame(value)
定位到表單元素,再切換進入
el = driver.find_element_by_xxx(value)
driver.switch_to.frame(el) /driver.switch_to_frame(el)