web 自動化之 selenium+webdriver 環境搭建及原理講解

文章目錄

        • 一、web 自動化測試學習說明
        • 二、什么 web 自動化測試
        • 三、selenium 簡介
        • 四、web自動化測試環境搭建
        • 五、web 自動化測試第一個腳本
        • 六、selenium 原理及源碼講解

一、web 自動化測試學習說明

進階 web 自動化測試學習:掌握 python 編程基礎

二、什么 web 自動化測試

web 端測試: 對網頁的測試
UI 測試: web 測試 + app 測試
web 自動化測試:通過代碼對網頁進行測試
UI 測試 = web 自動化測試 + APP 自動化測試

三、selenium 簡介

selenium 是企業主流應用廣泛 web 自動化測試框架
selenium 的三大組件:
1、selenium IDE 瀏覽器插件:實現腳本錄制
2、WebDriver 實現對瀏覽器的各種操作(API 包)
3、Grid 分布式執行,用例同時在多個瀏覽器同時執行,提搞測試效率

四、web自動化測試環境搭建

環境搭建步驟:
1、安裝 selenium (第三方庫)
cmd 命令:pip install selenium
2、安裝瀏覽器(谷歌瀏覽器)
常見瀏覽器:chrome 瀏覽器、IE 瀏覽器、Firefox 瀏覽器
3、安裝瀏覽器驅動
chrome 瀏覽器驅動:chromedriver.exe
IE 瀏覽器驅動:ieserverdriver.exe
Firefox 瀏覽器驅動:geckodirver.exe
特別注意事項:下載驅動版本必須與瀏覽器的版本一致
chrome 瀏覽器驅動下載地址
chromedriver.exe 文件放置到 python 安裝路徑(python.exe 所在的路徑)

五、web 自動化測試第一個腳本

打開瀏覽器,加載項目地址

from selenium import webdriver# 指令1:打開瀏覽器
driver=webdriver.Chrome()
# 指令2:加載項目地址
driver.get("https://www.baidu.com")
# 不斷發送其他指令:不同指令操控瀏覽器做不同的事情
六、selenium 原理及源碼講解

selenium 腳本如何操控瀏覽器進行對應的操作?

三者如何通信,實現 web 自動化測試:
結合 selenium 源碼講解 selenium 的原理:

  • 1、啟動瀏覽器驅動(chromedriver.exe)服務
  • 2、selenium 腳本與瀏覽器驅動建立連接,再 selenium 腳本發送指令(基于 http 通信)
    (發送指令給瀏覽器驅動,瀏覽器驅動控制瀏覽器操作)

不同的指令對瀏覽器進行不同的操作
指令包(API包):JsonWireProtocol( JWP)
JsonWireProtocol ? SeleniumHQ/selenium Wiki ? GitHub

打開瀏覽器,執行的命令:
response = self.execute(Command.NEW_SESSION, parameters)
指定請求地址 http://ip:端口號/路徑+請求方式+請求參數
response = self.command_executor.execute(driver_command, params)

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

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

相關文章

Linux 網絡命名空間:從內核資源管理到容器網絡隔離

1. 網絡命名空間是什么? 網絡命名空間(Network Namespace) 是 Linux 內核提供的一種網絡資源隔離機制,用于為進程或容器創建完全獨立的網絡環境。它并非物理或虛擬的網絡接口(如網卡、veth pair 等),而是一個虛擬容器,包含以下資源的獨立實例: 網絡接口(物理或虛擬)…

SQL知識點總結

總結的知識點主要來源于前段時間在牛客刷SQL題目中遇到的錯誤 目錄 1.WHERE字句不能與高級函數連用 2.去重——distinct 3.不等于某個值 4.查多個范圍內的值 5. 升/降序排序 6.占位符 7.統計某類別總數計算平均值 8.合并查詢——UNION (ALL) 9…

【軟考-高級】【信息系統項目管理師】【論文基礎】采購管理過程輸入輸出及工具技術的使用方法

采購管理概念 項目采購管理包括從項目團隊外部采購或獲取所需產品、服務或成果的各個過程。項目采購管理包括編制和管理協議所需的管理和控制過程,例如合同、訂購單、協議備忘錄(MOA)和服務水平協議(SLA)。 采購管理…

C++ 手寫一個內存池

內存池是一種內存管理技術,它預先分配一大塊內存,之后將其按需分割成多個小塊供程序使用。下面將詳細闡述它的好處以及適用場景。 內存池的好處 減少內存碎片:在動態內存分配時,頻繁地分配和釋放不同大小的內存塊,會…

LeetCode 3341.到達最后一個房間的最少時間 I:Dijkstra算法(類似深搜)-簡短清晰的話描述

【LetMeFly】3341.到達最后一個房間的最少時間 I:Dijkstra算法(類似深搜)-簡短清晰的話描述 力扣題目鏈接:https://leetcode.cn/problems/find-minimum-time-to-reach-last-room-i/ 有一個地窖,地窖中有 n x m 個房間…

學習Linux的第四天

今天我們來學習Linux的網絡配置,以及鏈表的知識開個小頭 三種網絡配置模式 橋接模式(用的最多) 2.Nat模式 3. 僅主機模式(Nat模式的功能外,只能在局域網通信,不能訪問外網) 橋接模式&#xf…

【 window.addEventListener(‘message‘, handleMessage)無效的問題】

在react native加載中可能出現 window.addEventListener(‘message’, handleMessage)無效,無法監聽到在react-native-webview中通過postMessage發送的消息,可以通過下面的方法來處理 window.addEventListener(message, handleMessage);document.addEven…

css識別\n換行

在CSS中,\n 通常不會被識別為換行符。如果你希望在CSS中實現換行效果,可以使用以下幾種方法: 使用 white-space 屬性: 設置 white-space: pre 或 white-space: pre-wrap,這樣文本中的換行符 \n 會被保留并顯示為換行。…

電容知識小結

1.同樣是電容,1uf的陶瓷電容和1uf的鋁電解電容是不一樣的; 2.實際的電容等效為ESR C ESL;ESR等效電阻和ESL等效電感; 3.鋁電解電容,瓷片電容和鉭電容。 4.電容是容納和釋放電荷的電子器件; 5.電容的工作:…

[逆向工程]什么是HOOK(鉤子)技術(二十一)

[逆向工程]什么是HOOK(鉤子)技術(二十一) HOOK(鉤子)是一種系統級或應用級的消息攔截與處理機制,廣泛用于監控、修改或增強程序行為。其核心思想是在特定事件(如鍵盤輸入、函數調用…

java后端知識點復習

# 復習匯總 ### 🧑?💻 User java關于高并發下的銀行轉賬問題,根據具體的例子來講解清楚 --- ### 🤖 Assistant --- ### 🧑?💻 User java關于高并發下的銀行轉賬問題,根據具體的例子來講…

PostgreSQL安裝與升級cron插件

cron插件是PostgreSQL數據庫一個好用的定時任務管理的插件。 注:以下命令均在debian linux bookworm版本系統上驗證通過。 apt安裝cron插件 #獲取軟件包驗證的公鑰 wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add - #…

66、微服務保姆教程(九)微服務的高可用性

微服務的高可用性與擴展 服務的高可用性 集群搭建與負載均衡。服務的故障容錯與自愈。分布式事務與一致性 分布式事務的挑戰與解決方案。使用 RocketMQ 實現分布式事務。微服務的監控與可觀測性 metrics 和日志的收集與分析。sentinel 的監控功能。容器化與云原生 將微服務部署…

6. HTML 錨點鏈接與頁面導航

在開發長頁面或文檔類網站時,錨點鏈接(Anchor Links)是一個非常實用的功能。通過學習 HTML 錨點技術,將會掌握如何在同一頁面內實現快速跳轉,以及如何優化長頁面的導航體驗。以下是基于給定素材的學習總結和實踐心得 一、什么是錨點鏈接? 錨點鏈接(也稱為頁面內鏈接)允…

【iOS】源碼閱讀(三)——內存對齊原理

文章目錄 前言獲取內存大小的三種常用方式sizeofclass_getInstanceSizemalloc_size 總結 前言 之前學習alloc相關源碼,涉及到內存對齊的相關內容,今天筆者詳細學習了一下相關內容并寫了此篇博客。 獲取內存大小的三種常用方式 獲取內存大小的方式有很多…

新手學編程前端好還是后端

在當今數字化的時代,編程成為了一項備受追捧的技能。對于那些剛剛踏入編程世界的新手來說,常常會面臨一個重要的抉擇:是選擇前端開發,還是后端開發?這就像是站在一個分岔路口,每一條路都充滿了未知和機遇。…

【面試 · 一】vue大集合

目錄 vue2 基礎屬性 組件通信 全局狀態管理 vueX 路由 路由守衛 vue3 基礎屬性 組件通信 全局狀態管理 Pinia 路由 路由守衛 vue2、vue3生命周期 setup vue2 基礎屬性 data:用于定義組件的初始數據,必須是一個函數,返回一個對…

nginx之proxy_redirect應用

一、功能說明 proxy_redirect 是 Nginx 反向代理中用于修改后端返回的響應頭中 Location 和 Refresh 字段的核心指令,主要解決以下問題:協議/地址透傳錯誤:當后端返回的 Location 包含內部 IP、HTTP 協議或非標準端口時,需修正為…

[Qt] mvd使用的注意事項

在使用mvd時&#xff0c;我們可能會有這種需求&#xff0c;比如有一項的數據是文件類型&#xff0c;然后我們要彈出一個文件對話框&#xff0c;選擇一個文件路徑然后把文件路徑展示出來。 我們可能寫出如下代碼 #include "MyStyledItemDeletegate.h" #include <Q…

LeetCode 220 存在重復元素 III 題解

LeetCode 220 存在重復元素 III 題解 題目描述 給定一個整數數組 nums 和兩個整數 k 和 t&#xff0c;請判斷數組中是否存在兩個不同的索引 i 和 j&#xff0c;使得&#xff1a; abs(nums[i] - nums[j]) < tabs(i - j) < k 方法思路&#xff1a;桶排序 滑動窗口 核…