提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔
文章目錄
- 一、UI自動化介紹
- 1.認識UI自動化測試
- 2.實施UI自動化測試前置條件
- 3.UI自動化測試執行時機
- 4.UI自動化測試核心作用和劣勢
- 二、認識Web自動化測試工具-Selenium02
- 1.Selenium 特點
- 2.Selenium 核心組件
- 3.Web自動化測試環境搭建步驟
- 1.導包
- 三、入門案例
- 1.自動登錄
- 四、CSS選擇器定位
- 1.認識CSS定位
- 2.css選擇器
- 3.CSS定位-層級選擇器
- 4.表單自動化
- 5.元素屬性定位
一、UI自動化介紹
1.認識UI自動化測試
- UI:User Interface,簡稱UI,用戶界面是系統和用戶之間進行交互和信息交換的媒介
- UI自動化測試:使用程序、腳本對系統界面體現的功能和數據信息展示等進行的測試技術
- 為什么要自動化測試:
- 大量的版本需要回歸測試
- 手工回歸測試效率比較低
- 測試工程師價值得不到體現
2.實施UI自動化測試前置條件
- 項目需要實施UI自動化測試需要滿足以下前置條件
1.項目上線發布頻率高,回歸測試任務重
2.項目需要實現自動化的功能模塊,需求變更不頻繁
一般只實現核心功能模塊
3.項目周期要長
公司自研或者公司核心產品
3.UI自動化測試執行時機
- 一般情況下在手工測試完成之后
- 版本或項目功能趨于穩定
4.UI自動化測試核心作用和劣勢
- 項目實現UI自動化測試后:
1.節省人力成本:回歸測試工作由腳本代替人去執行
2.提高回歸測試效率:腳本執行測試速度更快
3.提高測試質量:一旦自動化腳本庫完善后測試執行過程更標準和準確 - UI自動化測試劣勢
1.對測試人員要求提高
2.前期投入成本大
3.對項目要求高
二、認識Web自動化測試工具-Selenium02
1.Selenium 特點
2.Selenium 核心組件
- Selenium-IDE
瀏覽器插件,錄制腳本工具。支持腳本回放和導出。 - Selenium-Grid
分布式執行自動化測試用例工具,用于大批量測試用例
的執行 - Selenium-Webdriver
腳本編寫核心工具,提供模擬手工操作的常用方法
3.Web自動化測試環境搭建步驟
- 安裝包語法:pip install selenium
- 查看包語法:pip show selenium
- 卸載包語法:pip uninstall selenium
- 示例:通過程序啟動瀏覽通過程序啟動瀏覽器,并打開商城首頁,暫停3秒,關閉瀏覽器,并打開百度首頁,暫停3秒,關閉瀏覽器
1.導包
import time
from selenium import webdriver
#2.創建瀏覽器驅動對象
#Chrome瀏覽器:
driver = webdriver.Chrome()
#3.打開Web頁面
driver.get(“https://hmshop-test.itheima.net/index.php”)
#4.暫停
time.sleep(3)
#5.關閉驅動對象
三、入門案例
1.自動登錄
- 關鍵步驟:
- 打開瀏覽器
- 訪問頁面
- 頁面操作
- 關閉瀏覽器
- 查找元素:element = driver.find_element(定位方法, 值)
- 元素操作:
輸入:element.send_keys(value)
點擊: element.click() - 步驟:
步驟:
1、導包
2、打開瀏覽器
3、訪問頁面
4、頁面操作
① 用戶名查找及操作
② 密碼查找及操作
③ 驗證碼查找及操作
④ 登錄按鈕查找及操作
5、關閉瀏覽器
#1、導包
import time
from selenium import webdriver
#快捷導包 ctrl + alt + 空格
from selenium.webdriver.common.by import By
#2、打開瀏覽器
driver = webdriver.Chrome()
#窗口最大化
driver.maximize_window()
#3、訪問頁面
driver.get(“https://hmshop-test.itheima.net/Home/user/login.html”)
#4、頁面操作
#用戶名查找及操作
element = driver.find_element(By.ID, “username”)
element.send_keys(“13488888888”)
#密碼查找及操作
element = driver.find_element(By.ID, “password”)
element.send_keys(“123456”)
#驗證碼查找及操作
driver.find_element(By.ID, “verify_code”).send_keys(“8888”)
#登錄按鈕查找及操作
driver.find_element(By.NAME, “sbtbutton”).click()
#5、關閉瀏覽器
time.sleep(3)
driver.quit()
四、CSS選擇器定位
1.認識CSS定位
- css概念:(Cascading Style Sheets)是一種語言,用來描述HTML
元素的顯示樣式。 - 選擇器:一種表達式,可以找到HTML中的標簽元素。
- css定位概念:selenium利用選擇器定位元素的定位方式。
- 方法:driver.find_elements(By.CSS_SELECTOR, 選擇器表達式)
2.css選擇器
- ID選擇器:
| 說明:利用元素ID屬性來選擇
l 格式:#id屬性值 - 類選擇器
l 說明:利用類名來選擇
l 格式:.類名 - 屬性選擇器
l 說明:利用標簽的屬性來選擇
l 格式:HTML標簽[屬性=值]
l 局部屬性:HTML標簽[屬性名*=‘局部屬性值’]
3.CSS定位-層級選擇器
- 父子關系:后代關系包含了父子關系,一般只需要記憶后代關系即可
概念:據元素的父子關系來選擇元素。
表達式寫法:element1>element2。 - 語法:
- 后代關系:
概念:根據元素的上級元素來選擇元素(只要是目標元素上層元素即可)
表達式寫法:element1 element2。 - 語法:
4.表單自動化
- 能夠通過CSS選擇器定位到頁面元素
- 能通過id,class進行元素定位,并實現輸入框自動輸入及自動清除
- 案例:
- 代碼:
#導包
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
#打開瀏覽器
driver = webdriver.Chrome()
driver.maximize_window()
#打開頁面
driver.get(“https://hmshop-test.itheima.net/Home/user/reg.html”)
#頁面操作
#手機號碼:#username
driver.find_element(By.CSS_SELECTOR, “#username”).send_keys(“13612330001”)
#圖像驗證碼:.inp.imgcode.J_imgcode
driver.find_element(By.CSS_SELECTOR, “[name=‘verify_code’]”).send_keys(“8888”)
#設置密碼:#password
driver.find_element(By.CSS_SELECTOR, “#password”).send_keys(“123456”)
#確認密碼:#password2
driver.find_element(By.CSS_SELECTOR, “#password2”).send_keys(“123456”)
#推薦人手機:.inp.fmobile.J_cellphone
driver.find_element(By.CSS_SELECTOR, “[name=‘invite’]”).send_keys(“13488888888”)
#我已閱讀并同意《用戶服務協議》:
#同意協議并注冊:.regbtn.J_btn_agree
driver.find_element(By.CSS_SELECTOR, “.regbtn.J_btn_agree”).click()
time.sleep(3)
#退出瀏覽器
driver.quit()
5.元素屬性定位
- id定位: driver.find_element(By.ID, “id屬性值”)
- class定位: driver.find_element(By.CLASS_NAME, “class屬性值”)
- name定位: driver.find_element(By.NAME, “name屬性值”)
- 案例:
#導入工具包
import time
from selenium.webdriver.common.by import By
from tools.chromeDriver import get_driver, quit_driver
import random
#獲取驅動、并實現頁面元素定位與操作
driver = get_driver(“https://hmshop-test.itheima.net/Home/user/reg.html”)
##username
#driver.find_element(By.CSS_SELECTOR, “#username”).send_keys(“13633331001”)
#引入隨機數解決手機號唯一性問題
driver.find_element(By.ID, “username”).send_keys(f"136{random.randint(20000000,
88887777)}“)
#.inp.imgcode.J_imgcode
driver.find_element(By.CLASS_NAME, “imgcode”).send_keys(“8888”)
##password
driver.find_element(By.ID, “password”).send_keys(“123456”)
##password2
driver.find_element(By.ID, “password2”).send_keys(“123456”)
#[name=‘invite’]
driver.find_element(By.NAME, “invite”).send_keys(”")
#.regbtn.J_btn_agree
time.sleep(2)
driver.find_element(By.CLASS_NAME, “J_btn_agree”).click()
#退出瀏覽器
quit_driver(driver)