一文了解什么是Selenium自動化測試?

一、Selenium是什么?

  用官網的一句話來講:Selenium automates browsers. That's it!簡單來講,Selenium是一個用于Web應用程序自動化測試工具。Selenium測試直接運行在瀏覽器中,就像真正的用戶在操作瀏覽器一樣。支持的瀏覽器包括IE,Firefox,Safari,Chrome等。Selenium 不僅僅是一個工具或 API,它還組成了許多工具

(以上用了翻譯軟件,有些翻譯不準確,閱讀時請自行斟酌)

WebDriver

如果你開始使用桌面網站或移動網站測試自動化,那么你將使用 webdriverapi。 Webdriver 使用瀏覽器廠商提供的瀏覽器自動化 api 來控制瀏覽器和運行測試。 這就好像是一個真正的用戶在操作瀏覽器。 由于 WebDriver 不需要使用應用程序代碼編譯其 API,因此它不具有侵入性。 因此,您測試的應用程序與實時推送的應用程序相同。

IDE

Ide (集成開發環境)是您用來開發 Selenium 測試用例的工具。 它是一個易于使用的 Chrome 和 Firefox 擴展,并且通常是開發測試用例的最有效的方法。 它使用現有的 Selenium 命令記錄用戶在瀏覽器中的操作,參數由該元素的上下文定義。 這不僅是一個節省時間的方法,也是學習 Selenium 腳本語法的一個很好的方法。

Grid

Selenium Grid 允許您跨不同平臺在不同的機器上運行測試用例。 觸發測試用例的控制位于本地端,當觸發測試用例時,它們將由遠程端自動執行。

在 WebDriver 測試開發之后,您可能需要在多個瀏覽器和操作系統組合上運行測試。 這就是Grid出現的地方。

二、Selenium History

  2004年,誕生了Selenium Core,Selenium Core是基于瀏覽器并且采用JavaScript編程語言的測試工具,運行在瀏覽器的安全沙箱中,設計理念是將待測試產品、Selenium Core和測試腳本均部署到同一臺服務器上來完成自動化測試的工作。

?  2005年,Selenium RC誕生,就是selenium1 ,這個時候,Selenium Core其實是Selenium RC的核心。Selenium RC讓待測試產品、Selenium Core和測試腳本三者分散在不同的服務器上。(測試腳本只關心將HTTP請求發送到指定的URL上,selenium本身不需要關心HTTP請求由于什么程序編程語言編寫而成),Selenium RC包括兩部分:一個是Selenium RC Server,一個是提供各種編程語言的客戶端驅動來編寫測試腳本

?   2007年,Webdriver誕生,WebDriver的設計理念是將端到端測試與底層具體的測試工具分隔離,并采用設計模式Adapter適配器來達到目標。WebDriver的API組織更多的是面向對象。

?  2008年,selenium2誕生,selenium2其實是selenium rc和webdriver的合并,合并的根本原因是相互補充各自的缺點

?  2009年,selenium3誕生,這個版本剔除了selenium rc , 主要由 selenium webdriver和selenium Grid組成, 我們日常使用的其實就是selenium webdriver,至于selenium grid是一個分布式實現自動化測試的工具

三、Selenium原理

本文所講的Selenium是指Selenium Webdriver,Selenium WebDriver與RC的功能相同,并且包含原始的1.x綁定。它涉及語言綁定和單個瀏覽器控制代碼的實現。這通常被稱為“WebDriver”,有時也被稱為Selenium 2。Selenium 1.0 + WebDriver = Selenium 2.0

WebDriver被設計在一個更簡單和更簡潔的編程接口中,同時解決了Selenium-RC API中的一些限制。

與Selenium1.0相比,WebDriver是一個緊湊的面向對象的API

它更有效地驅動瀏覽器,并克服了Selenium 1.x的限制,這影響了我們的功能測試覆蓋范圍,如文件上傳或下載,彈出框和對話框

在用Selenium進行自動化測試時必須引入相應jar包,比如selenium-server-standalone-2.46.0.jar,selenium-java-2.47.1.jar,3+以上版本可能有所不同,我們看到有個sever這么一個jar包,這個jar包就是Selenium服務,server端可以是任何瀏覽器作為remote server,職責就是處理client的請求并作出相應操作,client就是我們運行的腳本,response的具體內容根據請求的內容而定,我們以firefox為例,如下圖所示

四、Selenium工作過程總結:

selenium client(Java等語言編寫的自動化測試腳本)初始化一個service服務,通過Webdriver啟動瀏覽器驅動程序
通過RemoteWebDriver向瀏覽器驅動程序發送HTTP請求,瀏覽器驅動程序解析請求,打開瀏覽器,并獲得sessionid,如果再次對瀏覽器操作需攜帶此id
打開瀏覽器,綁定特定的端口,把啟動后的瀏覽器作為webdriver的remote server
打開瀏覽器后,所有的selenium的操作(訪問地址,查找元素等)均通過RemoteConnection鏈接到remote server,然后使用execute方法調用_request方法通過urlib3向remote server發送請求
瀏覽器通過請求的內容執行對應動作
瀏覽器再把執行的動作結果通過瀏覽器驅動程序返回給測試腳本

五、remote server端的這些功能是如何實現的呢?

  瀏覽器實現了webdriver的統一接口,client就可以通過統一的restful的接口去進行瀏覽器的自動化操作。

  目前webdriver支持ie, chrome, firefox等主流瀏覽器,其主要原因是這些瀏覽器實現了webdriver約定的各種接口。

舉個打開瀏覽器的栗子:

package com.Demo;import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;public class ExampleForFirefox {public static void main(String[] args) {System.setProperty("webdriver.firefox.bin", "D:\\Program Files\\Mozilla Firefox 24\\firefox.exe");WebDriver driver = new FirefoxDriver();System.out.println("https://www.cnblogs.com/mrjade/");driver.get("https://www.cnblogs.com/mrjade/");}
}

六、附:

各版本Chrome下載地址:Google Chrome 64bit Windows版_chrome瀏覽器,chrome插件,谷歌瀏覽器下載,談笑有鴻儒

Selenium Chrome版本與chromedriver兼容版本對照表:2019 Selenium Chrome版本與chromedriver兼容版本對照表_YOYO測試的博客-CSDN博客_chrome對應selenium版本

各版本ChromeDriver下載地址:http://npm.taobao.org/mirrors/chromedriver/?


? ? ? ? ? ? ?【下面是我整理的2023年最全的軟件測試工程師學習知識架構體系圖】


一、Python編程入門到精通

二、接口自動化項目實戰?

三、Web自動化項目實戰


四、App自動化項目實戰?

五、一線大廠簡歷


六、測試開發DevOps體系?

七、常用自動化測試工具

八、JMeter性能測試?

九、總結(尾部小驚喜)

生命不息,奮斗不止。每一份努力都不會被辜負,只要堅持不懈,終究會有回報。珍惜時間,追求夢想。不忘初心,砥礪前行。你的未來,由你掌握!

生命短暫,時間寶貴,我們無法預知未來會發生什么,但我們可以掌握當下。珍惜每一天,努力奮斗,讓自己變得更加強大和優秀。堅定信念,執著追求,成功終將屬于你!

只有不斷地挑戰自己,才能不斷地超越自己。堅持追求夢想,勇敢前行,你就會發現奮斗的過程是如此美好而值得。相信自己,你一定可以做到!?

最后感謝每一個認真閱讀我文章的人,禮尚往來總是要有的,雖然不是什么很值錢的東西,如果你用得到的話可以直接拿走:

這些資料,對于【軟件測試】的朋友來說應該是最全面最完整的備戰倉庫,這個倉庫也陪伴上萬個測試工程師們走過最艱難的路程,希望也能幫助到你!?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/214675.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/214675.shtml
英文地址,請注明出處:http://en.pswp.cn/news/214675.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【美賽指南】新手小白必備參賽指南

美賽指南 一、2024美賽安排二、題目類型三、選題建議四、美賽前期準備五、常用算法 一、2024美賽安排 報名截至時間:2024年 2月2日 00:00 比賽時間:2024年 2月2日 6:00- 2月6日 9:00 提交截至日期:2024年2…

嵌入式系統復習--概述

文章目錄 基本概念嵌入式系統的組成結構嵌入式操作系統嵌入式軟件開發環境硬件基礎簡介下一篇 基本概念 嵌入式計算機:把嵌入到對象體系中、實現對象體系智能化控制的帶有微控制器的計算機,稱作嵌入式計算機 嵌入式系統:以應用為中心&#…

harmonyOS學習筆記之@Provide裝飾器和@Consume裝飾器

Provide和Consume,應用于與后代組件的雙向數據同步,應用于狀態數據在多個層級之間傳遞的場景。不同于State/Link裝飾器修飾的 父子組件之間通過命名參數機制傳遞,Provide和Consume擺脫參數傳遞機制的束縛,實現跨層級傳遞。 其中Pr…

基于Java的招聘系統的設計與實現

末尾獲取源碼 開發語言:Java Java開發工具:JDK1.8 后端框架:SSM 前端:Vue 數據庫:MySQL5.7和Navicat管理工具結合 服務器:Tomcat8.5 開發軟件:IDEA / Eclipse 是否Maven項目:是 目錄…

OWASP Web 安全測試指南 WSTG

Eoin Keary的前言 軟件不安全的問題可能是我們這個時代最重要的技術挑戰。支持業務、社交網絡等的 Web 應用程序的急劇興起只會加劇建立一種強大的方法來編寫和保護我們的 Internet、Web 應用程序和數據的要求。 在開放 Web 應用程序安全項目 (OWASP) 中…

HarmonyOS應用開發-手寫板

這是一個基于HarmonyOS做的一個手寫板應用,只需要簡單的幾十行代碼,就可以實現如下手寫功能以及清空畫布功能。 一、先上效果圖: 二、上代碼 Entry Component struct Index {//手寫路徑State pathCommands: string ;build() {Column() {//…

4-二分-索引二分-搜索旋轉排序數組 II

這是索引二分的第四篇算法&#xff0c;力扣鏈接 已知存在一個按非降序排列的整數數組 nums &#xff0c;數組中的值不必互不相同。 在傳遞給函數之前&#xff0c;nums 在預先未知的某個下標 k&#xff08;0 < k < nums.length&#xff09;上進行了 旋轉 &#xff0c;使數…

RocketMQ-源碼架構

源碼環境搭建 1、主要功能模塊 RocketMQ官方Git倉庫地址&#xff1a;GitHub - apache/rocketmq: Apache RocketMQ is a cloud native messaging and streaming platform, making it simple to build event-driven applications. RocketMQ的官方網站下載&#xff1a;下載 | R…

現在多種數據庫的讀寫模型對比

目錄 mongDB read write ES read write MySql write 總結 mongDB 3.0 版本后的WiredTiger存儲引擎 read 1. 應用通過driver 發起Buffer I/O讀操作&#xff0c;由操作系統將磁盤數據頁加載到文件系統的頁緩存區 2. 引擎層讀取頁緩沖區的數據&#xff0c;進行解壓后放…

C++STL算法庫中謂詞的使用

什么是c的謂詞 謂詞概念&#xff1a; 謂詞函數是一個判斷式&#xff0c;一個返回bool值的函數或者仿函數&#xff0c;有幾個入參就是幾元謂詞。一般做一個函數的參數使用【引用自百度百科】。 常見的可以作為謂詞的東西&#xff1a;函數、函數指針、函數對象、lambda表達式&am…

2023 年浙江省職業院校技能大賽信息安全管理與評估賽項規程

*2023 年浙江省職業院校技能大賽“高職組”* *“信息安全管理與評估”賽項規程* *一、賽項名稱* 賽項名稱&#xff1a;信息安全管理與評估 英文名稱&#xff1a;Information Security Management and Evaluation 賽項組別&#xff1a;高職 賽項歸屬產業&#xff1a;電子信…

熱電廠發電機組常見故障及預測性維護方法

熱電廠的發電機組是關鍵的能源生產設備&#xff0c;在電力供應中扮演著關鍵角色。但經過長期運行和高負荷工作&#xff0c;一旦發生故障&#xff0c;可能導致停機、設備損壞甚至引發嚴重事故。因此&#xff0c;實施有效的預測性維護方法對于確保發電機組的穩定運行至關重要。本…

Linux(17):認識與分析登錄檔

什么是登錄檔 【詳細而確實的分析以及備份系統的登錄文件】是一個系統管理員應該要進行的任務之一。 登錄檔 就是記錄系統活動信息的幾個文件&#xff0c;例如&#xff1a;何時、何地(來源IP)、何人(什么服務名稱)、做了什么動作(訊息登錄啰)。 換句話說就是&#xff1a;記錄系…

【MySQL】:表的操作

表的操作 一.創建表二.查看表結構三.修改表四.刪除表 一.創建表 field 表示列名。 datatype 表示列的類型。 character set 字符集&#xff0c;如果沒有指定字符集&#xff0c;則以所在數據庫的字符集為準。 collate 校驗規則&#xff0c;如果沒有指定校驗規則&#xff0c;則以…

MySQL系列(二)——日志篇

MySQL日志 主要包括錯誤日志、查詢日志、慢查詢日志、事務日志、二進制日志幾大類。其中&#xff0c;比較重要的還要屬二進制日志binlog&#xff08;歸檔日志&#xff09;和事務日志redo log&#xff08;重做日志&#xff09;和undo log&#xff08;回滾日志&#xff09;。 今…

windows批處理腳本(.bat)如何激活Anconda Prompt虛擬環境

通過call 來調用激活腳本&#xff0c; activate myenv指的是要激活的環境&#xff0c;若省略&#xff0c;則激活的是base環境。 call : 從另一個批處理程序調用一個批處理程序&#xff0c;而不停止父批處理程序。 call C:\ProgramData\Anaconda3\Scripts\activate.bat activate…

fastdds共享內存實現原理

fastdds 共享內存分兩個部分&#xff0c;一部分用于保存數據&#xff0c;一部分用于通信。 fastrtps_“UUID”:共享內存包括又兩部分數據&#xff0c;BufferNode和segment_size, 用配置文件port_queue_capacity_指定BufferNode的數量&#xff0c;segment_size用于保存實際傳輸的…

imp導入數據發現的

遷移歷史數據到歷史庫&#xff0c;因為災備數據中心使用的DG&#xff0c;無法使用數據泵&#xff0c;只能通過exp導出&#xff0c;然后再通過imp導入 為防止undo表空間壓力過大&#xff0c;在導入時imp使用了commit參數及buffer參數 這次導入數據量達到1TB&#xff0c;剛到了1/…

智物發布MT6877平臺無線AR智能眼鏡參考設計,推動下一代無線AR發展

隨著增強現實(AR)技術的不斷發展&#xff0c;有線AR眼鏡在連接和使用方面存在一些限制。為了解決這些問題&#xff0c;無線AR智能眼鏡的推出勢在必行。 新一代無線AR智能眼鏡采用了天璣900&#xff08;MT6877&#xff09;平臺作為參考設計&#xff0c;搭載了2.4GHz的八核處理器…

【rabbitMQ】Exchanges交換機

上一篇&#xff1a;springboot整合rabbitMQ模擬簡單收發消息 https://blog.csdn.net/m0_67930426/article/details/134904766 本篇代碼基于上一篇繼續寫 目錄 Fanout 交換機 1. add queue 2. add Exchange 3.綁定隊列 Direct 交換機 1. add queue 2. add Exchange 3.…