網站首頁 編程語言 正文
1.selenium 介紹
Selenium是一個用于Web應 用程序測試的工具。Selenium測試直接運行在瀏覽器中,就像真正的用戶在操作一樣。支持的瀏
覽器包括IE (7, 8,9, 10, 11 ) , Moilla Firefox , Safari , Google Chrome,Opera , Edge等。
這個工具的主要功能包括:測試與瀏覽器的兼容性一測試應 用程序看是否能夠很好得工作在不同瀏覽器和操作系統之上。測試系統功能一創建回歸測試檢驗軟件功能和用戶需求。支持自動錄制動作和自動生成Python、Net、Java、 Peri等不同語言的測試腳本。
1.1 selenium歷史
Selenium 經歷了三個大版本,Selenium 1.0、Selenium 2.0 和 Selenium 3.0。Selenium 不是由單獨一個工具構成的,而是由一些插件和類庫組成的,這些插件和類庫有其各自的特點和應用場景。
Selenium 1.0 家族關系如圖 所示:
1.Selenium 1.0
(1)Selenium IDE。
Selenium IDE 是嵌入在 Firefox 瀏覽器中的一個插件,可實現簡單的瀏覽器操作的錄制與回放功能。
(2)Selenium Grid。
Selenium Grid 是一個自動化測試輔助工具。利用 Grid 可以很方便地實現在多臺機器上或異構環境中運行測試用例。
(3)Selenium RC。
Selenium RC(Remote Control)是 Selenium 家族的核心部分,支持多種不同語言編寫的自動化測試腳本。把 Selenium RC 的服務器作為代理服務器去訪問應用,即可達到測試的目的。
Selenium RC 分為 Client Libraries 和 Selenium Server 兩部分。Client Libraries 主要用于編寫測試腳本,負責控制 Selenium Server 的庫。Selenium Server 負責控制瀏覽器行為。
Selenium Server 主要分為三部分:Selenium Core、Launcher 和 Http Proxy。Selenium Core就是一堆 JavaScript 函數的集合。通過這些 JavaScript 函數,我們可以用程序對瀏覽器進行操作。Launcher 用于啟動瀏覽器,把 Selenium Core 加載到瀏覽器頁面當中,同時,把瀏覽器的代理設置為 Http Proxy。
2.Selenium 2.0
Selenium 2.0 把 WebDriver 加到了 Selenium1.0 這個家族中,簡單用公式表示如下:
Selenium 2.0 = Selenium 1.0 + WebDriver
需要注意的是,在 Selenium 2.0 中主推的是 WebDriver,可以將其看作 Selenium RC 的替代品。為了保持向下的兼容性,Selenium 2.0 并沒有徹底拋棄 Selenium RC。
Selenium RC 與 WebDriver 的工作方式有著本質的區別。
Selenium RC 是在瀏覽器中運行 JavaScript 應用,使用瀏覽器內置的 JavaScript 翻譯器來翻譯和執行 selenese 的(selenese 是 Selenium 命令集合)。
WebDriver 通過原生瀏覽器支持或者瀏覽器擴展來直接控制瀏覽器。WebDriver 是針對各個瀏覽器而開發的,取代了嵌入被測 Web 應用中的 JavaScript。WebDriver 與瀏覽器緊密集成,支持創建更高級的測試,避免了 JavaScript 安全模型導致的限制。除來自瀏覽器廠商的支持外,WebDriver 還可利用操作系統級的調用,模擬用戶輸入。
Selenium 與 WebDriver 原本屬于兩個不同的項目,WebDriver 的創建者 Simon Stewart早在 2009 年 8 月的一封郵件中解釋了項目合并的原因。
3.Selenium 3.0
2016 年 7 月,Selenium 3.0 悄悄發布了第一個 beta 版。Selenium 3.0 做了以下更新。
(1)去掉了 Selenium RC,簡單用公式表示如下:
Selenium 3.0 = Selenium 2.0 ?Selenium RC
(2)Selenium 3.0 只支持 Java 8 以上版本。
(3)Selenium 3.0 中的 Firefox 瀏覽器驅動獨立了。Selenium 2.0 測試庫默認是集成Firefox 瀏覽器驅動的,在 Selenium 3.0 中,Firefox 瀏覽器和 Chrome 瀏覽器一樣,在使用前需要下載和設置瀏覽器驅動。
(4)mac OS 操作系統集成了 Safari 的瀏覽器驅動,該驅動默認在/usr/bin/safaridriver 目錄下。
(5)只支持 IE 9.0 以上版本。
4.Selenium IDE
Selenium IDE 同樣是 Selenium的家族成員。Selenium IDE 有兩個版本,舊版的 Selenium IDE 是基于 Firefox 瀏覽器擴展的
它提供了比較完備的自動化功能,如腳本錄制/回放、定時任務等;還可以將錄制的腳本導成不同編程語言的 Selenium 測試腳本,這在很大程度上可以幫助新手編寫測試用例。
但舊版的 Selenium IDE 不支持 Firefox 新版本支持的 API,因此 Selenium 團隊重新開發了新版的 Selenium IDE,可以同時支持 Chrome、Firefox 以及其他瀏覽器。
新版的 Selenium IDE 如圖所示,功能比較簡單
2. selenium的環境配置步驟
- 1.準備好python環境
- 2.準備好selenium環境
- 3.下載瀏覽器對應的driver版本
- 4.driver配置環境變量
- 5.在python中import對應的依賴
2.1 安裝/卸載 selenium
打開cmd窗口,
使用命令“pip install selenium”安裝selenium
然后用命令“pip show selenium”查看是否安裝成功。
卸載命令pip uninstall selenium
Selenium 版本 3.141.0
Python IDLE 驗證:沒有報錯證明成功
2.2 安裝 drive
設置瀏覽器的驅動非常簡單。 我們可以手動創建一個存放瀏覽器驅動的目錄,如: D:\driver , 將下載的瀏覽器驅動文件(例如:chromedriver、geckodriver、IEDriverServer)丟到該目錄下。
我的電腦–>屬性–>系統設置–>高級–>環境變量–>系統變量–>Path,將“D:\driver”目錄添加到Path的值中。
Path
; D:\driver
注意:drive的版本應該與瀏覽器保持兼容
Chrome下載地址 https://www.chromedownloads.net/chrome64win-stable/list_2_2.html
Chromedriver下載地址:http://chromedriver.storage.googleapis.com/index.html
?驗證驅動 打開python自帶的編輯器
代碼:
>>> import selenium
>>> from selenium import webdriver
>>> driver = webdriver.Chrome
注意:Chrome “C” 區分大小寫
3.selenium-webdriver元素定位參考
自動化只要掌握四步操作:獲取元素,操作元素,獲取返回結果,斷言(返回結果與期望結果是否一致),最后自動出測試報告。本篇主要講如何用firefox輔助工具進行元素定位。(新版本的Chrome右鍵”檢查”可以查看元素)
元素定位在這四個環節中是至關重要的,如果說按學習精力分配的話,元素定位占70%;操作元素10%,獲取返回結果10%;斷言10%。如果一個頁面上的元素不能被定位到,那后面的操作就無法繼續了。webdriver提供的八種基本元素定位方法。
selenium的webdriver提供了八種基本的元素定位方法,前面六種是通過元素的屬性來直接定位的,后面的xpath和css定位更加靈活,需要重點掌握其中一個。
- 1.通過id定位:find_element_by_id()
- 2.通過name定位:find_element_by_name()
- 3.通過class定位:find_element_by_class_name()
- 4.通過tag定位:find_element_by_tag_name()
- 5.通過link定位:find_element_by_link_text()
- 6.通過partial_link定位:find_element_by_partial_link_text()
- 7.通過xpath定位:find_element_by_xpath()
- 8.通過css定位:find_element_by_css_selector()
4. 實例
import time
import selenium
from selenium import webdriver
# 1、創建Chrome實例 。
driver = webdriver.Chrome()
# 2、driver.get方法將定位在給定的URL的網頁 。
driver.get("https://www.baidu.com/") # get接受url可以是如何網址,此處以百度為例
# 3、定位元素
# 3.1、用id定位輸入框對象,
driver.find_element_by_id("kw").send_keys("python")
# 3.2、用id定位點擊對象,用click()觸發點擊事件
driver.find_element_by_id('su').click()
# 延遲3秒
time.sleep(3)
# 4、退出訪問的實例網站。
driver.quit()
原文鏈接:https://blog.csdn.net/u014096024/article/details/126452846
相關推薦
- 2022-08-28 C++實現貪心算法的示例詳解_C 語言
- 2022-07-30 解決響應式數據依賴響應式數據無響應問題
- 2022-07-08 Python如何通過地址獲取變量_python
- 2022-12-05 Django中使用AJAX的詳細過程_python
- 2022-10-27 Python使用pandas將表格數據進行處理_python
- 2022-09-26 在?React?Native?中使用?CSS?Modules的配置方法_React
- 2022-05-22 redis數據結構之壓縮列表_Redis
- 2022-07-13 CSS 不需要清除浮動的圣杯布局~面試可能會問
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支