Selenium自动化测试框架
1.Selenium概述
1.什么是框架?
框架(framework)是一個框子——指其約束性,也是一個架子——指其支撐性。是一個基本概念上的結構,用于去解決或者處理復雜的問題。
框架是整個或部分系統的可重用設計,表現為一組抽象構件及構件實例間交互的方法;另一種定義認為,框架是可被應用開發者定制的應用骨架。前者是從應用方面而后者是從目的方面給出的定義。
框架,其實就是某種應用的半成品,就是一組組件,供你選用完成你自己的系統。簡單說就是使用別人搭好的舞臺,你來做表演。
2.為什么使用框架?
1)自己從頭實現太復雜
2)使用框架能夠更專注于業務邏輯,加快開發速度
3)框架的使用能夠處理更多細節問題
4)使用人數多,穩定性,擴展性好
3.webdriver工作原理
4.selenium環境搭建
1)python3.7
2)Firefox35(大于43)
3)selenium框架
穩定版 2.48.0 (pip install selenium==2.48.0)
2.Selenium IDE
1.什么是Selenium-IDE?
Selenium的IDE(集成開發環境)是一個易于使用的Firefox插件,用于開發Selenium測試案例。它提供了一個圖形用戶界面,用于記錄使用Firefox瀏覽器,用來學習和使用Selenium用戶操作,但它只能用于只用Firefox瀏覽器不支持其它瀏覽器。
2.環境安裝
firefox官網
3.IDE功能簡介
1.文件:創建、打開和保存測試案例和測試案例集。編輯:復制、粘貼、刪除、撤銷和選擇測試案例中的所有命令。Options : 用于設置seleniunm IDE。
2.用來填寫被測網站的地址。
3.速度控制:控制案例的運行速度。
4.運行所有:運行一個測試案例集中的所有案例。
5.運行:運行當前選定的測試案例。
6.暫停/恢復:暫停和恢復測試案例執行。
7.單步:可以運行一個案例中的一行命令。
8.錄制:點擊之后,開始記錄你對瀏覽器的操作。
9.案例集列表。
10.測試腳本;table標簽:用表格形式展現命令及參數。source標簽:用原始方式展現,默認是HTML語言格式,也可以用其他語言展示。
11.查看腳本運行通過/失敗的個數。
12.當選中前命令對應參數。
13.日志/參考/UI元素/Rollup
模擬使用selenium IDE
1.錄制selenium腳本
2.導出為python.py
3.保存到桌面
4.復制到pycharm,運行
3.Selenium API基礎
瀏覽器驅動對象
1.庫的導入
from selenium import webdriver
2.創建瀏覽器對象
driver = webdriver.xxx()
使用dir(driver)查看方法
3.瀏覽器尺寸相關操作
maximize_window() # 最大化
get_window_size() # 獲取瀏覽器尺寸
set_window_size() # 設置瀏覽器尺寸
練習
from selenium import webdriverdriver=webdriver.Firefox() driver.maximize_window() print(driver.get_window_size()) driver.set_window_size(2000,2200) print(driver.get_window_size())
4.瀏覽器位置相關操作
get_window_position() 獲取瀏覽器位置
set_window_position(x,y) 設置瀏覽器位置
顯示器以左上角為(0,0),所有的位置操作都是相對于顯示器左上角展開的位移操作,單位是像素。
5.瀏覽器的關閉操作
close() 關閉當前標簽/窗口
quit() 關閉所有標簽/窗口
練習
from selenium import webdriverdriver=webdriver.Firefox() driver.set_window_size(2000,2200) print(driver.get_window_position()) driver.set_window_position(100,200) driver.close()6.頁面請求操作
driver.get(url) 請求某個url對應的響應
refresh() 刷新頁面操作
back() 回退到之前的頁面
forward() 前進到之后的頁面
練習
from selenium import webdriver import time driver=webdriver.Firefox() driver.get('http://www.baidu.com') time.sleep(2) driver.refresh() time.sleep(2) driver.get('https://zhuanlan.zhihu.com') driver.back() time.sleep(2) driver.forward() time.sleep(2) driver.close()獲取斷言信息
1.斷言的定義
斷言是編程術語,表示為一些布爾表達式,程序員相信在程序中的某個特定點該表達式值為真,可以在任何時候啟用和禁用斷言驗證,因此可以在測試時啟用斷言而在部署時禁用斷言。
2.獲取斷言信息的操作
current_url 獲取當前訪問頁面url
title 獲取當前瀏覽器標題
get_screenshot_as_png() 保存圖片
get_screenshot_as_file(file) 直接保存
page_source 網頁源碼
練習
from selenium import webdriver import time driver=webdriver.Firefox()driver.get('http://www.baidu.com') print(driver.current_url) print(driver.title) data=driver.get_screenshot_as_png() with open('111.png','wb') as f:f.write(data)datadata=driver.get_screenshot_as_file('222.png') print(driver.page_source)
元素的定位
1.元素定位方法的分類(調用方式):
直接調用型(推薦方式)
driver.find_element_by_xxx(value)使用By類型(需要導入By)
from selenium.webdriver.common.by import By driver.find_element(By.xxx,value)2.元素定位方法的分類(按定位方式):
3.八種定位方式的示例:
元素的操作
對元素的相關操作,一般要先獲取到元素,再調用相關方法
element = driver.find_element_by_xxx(value)點擊和輸入
element.clear() 清空輸入框 element.send_keys(data) 輸入數據 element.click() 點擊操作4.Selenium API高級
1.多標簽之間的切換
場景:有的時候點擊一個鏈接,新頁面并非由當前頁面跳轉過去,而是新開一個頁面打開,這種情況下,計算機需要識別多標簽或窗口的情況。
1.獲取所有窗口的句柄
handles = driver. window_handles調用該方法會得到一個列表,在selenium運行過程中的每一個窗口都有一個對應的值存放在里面。
2.通過窗口的句柄進入的窗口
driver.switch_to_window(handles[n])driver.switch_to.window(handles[n]) (推薦使用)通過窗口句柄激活進入某一窗口
多表單切換
在網頁中,表單嵌套是很常見的情況,尤其是在登錄的場景
1.什么是多表單?
實際上就是使用iframe/frame,引用了其他頁面的鏈接,真正的頁面數據并沒有出現在當前源碼中,但是在瀏覽器中我們看到,簡單理解可以使頁面中開了一個窗口顯示另一個頁面
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)總結
以上是生活随笔為你收集整理的Selenium自动化测试框架的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: xpath元素和css选择器的定位
- 下一篇: Selenium常用的8大元素定位方法