【自動化測試】Selenium Python UI自動化測試實用教程

一、引言:Selenium與UI自動化測試基礎

1.1 Selenium簡介

Selenium是一個開源的Web應用自動化測試框架,支持多瀏覽器(Chrome、Firefox、Edge等)和多編程語言(Python、Java、JavaScript等),核心組件包括:

  • WebDriver:通過瀏覽器原生API控制瀏覽器,模擬用戶操作(點擊、輸入等),無侵入性。
  • IDE:瀏覽器插件,支持錄制/回放操作,可導出測試腳本(適合新手快速上手)。
  • Grid:分布式測試工具,支持多節點并行執行測試用例,提升效率。

1.2 2025年Selenium核心新特性

Selenium 4.11+版本(2025年主流版本)帶來多項關鍵更新,顯著降低新手使用門檻:

  • Selenium Manager自動驅動管理:無需手動下載/配置ChromeDriver,框架自動匹配瀏覽器版本并下載驅動,解決長期困擾的“驅動版本不兼容”問題。
  • Chrome For Testing(CfT)支持:谷歌推出的專用測試瀏覽器,禁用自動更新,確保測試環境一致性,可通過npx @puppeteer/browsers install chrome@stable安裝。
  • PageLoadStrategy枚舉類:4.17版本新增,替代字符串參數,支持IDE自動補全,避免拼寫錯誤(如options.page_load_strategy = PageLoadStrategy.NONE)。
  • 相對定位器增強:支持通過元素相對位置定位(above/below/to_left_of/to_right_of/near),復雜頁面定位更靈活。
  • 啟動速度優化:瀏覽器驅動啟動邏輯調整,平均節省0.5秒啟動時間,通過動態重試間隔(首次0.01秒,逐步增加至0.5秒)提升效率。

二、環境搭建:從0到1配置開發環境

2.1 Python環境準備

  1. 安裝Python
    推薦Python 3.8+(兼容Selenium 4.x),從Python官網下載對應系統版本,安裝時勾選“Add Python to PATH”。
    驗證安裝:python --version(Windows)或python3 --version(macOS/Linux)。

  2. 虛擬環境配置(推薦)
    避免依賴沖突,使用venv創建獨立環境:

    # 創建虛擬環境
    python -m venv selenium_env
    # 激活環境(Windows)
    selenium_env\Scripts\activate
    # 激活環境(macOS/Linux)
    source selenium_env/bin/activate

2.2 Selenium安裝

通過pip安裝最新版Selenium(2025年推薦4.17.0+):

# 基礎安裝
pip install selenium
# 國內鏡像源加速(推薦)
pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple

驗證安裝:pip show selenium,輸出版本信息即成功。

2.3 瀏覽器與驅動配置

2.3.1 Chrome瀏覽器(推薦)
  1. 安裝Chrome For Testing
    專為測試設計,禁用自動更新,通過npm安裝:

    # 安裝穩定版Chrome For Testing
    npx @puppeteer/browsers install chrome@stable
    # 安裝指定版本(如116.0.5793.0)
    npx @puppeteer/browsers install chrome@116.0.5793.0
  2. 驅動自動管理
    Selenium 4.11+內置Selenium Manager,無需手動下載ChromeDriver:

    from selenium import webdriver
    # 自動管理驅動,無需executable_path參數
    driver = webdriver.Chrome()
    driver.get("https://www.baidu.com")
    driver.quit()
2.3.2 其他瀏覽器配置
  • Firefox:需安裝GeckoDriver,下載后放入系統PATH或通過Service指定路徑:
    from selenium.webdriver.firefox.service import Service
    driver = webdriver.Firefox(service=Service("./geckodriver"))
  • Edge:基于Chromium內核,配置方式同Chrome,使用webdriver.Edge()

三、核心API:元素定位與操作實戰

3.1 元素定位策略(8大方法)

Selenium提供多種定位方式,按優先級排序如下:

定位方式 語法示例 適用場景
ID driver.find_element(By.ID, "kw") 元素有唯一ID(如百度搜索框)
NAME driver.find_element(By.NAME, "wd")

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

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

相關文章

基于VSCode的nRF52840開發環境搭建

nRF52840是Nordic Semiconductor推出的一款功能強大的多協議SoC,廣泛應用于物聯網設備、可穿戴設備和低功耗藍牙產品開發。本篇文章將詳細介紹如何在VSCode中搭建完整的nRF52840開發環境,讓您能夠高效地進行嵌入式開發。 一、準備工作 VSCode&#xff1a…

GStreamer開發筆記(九):gst-rtcp-server安裝和部署實現簡單的rtsp-server服務器推流Demo

若該文為原創文章,轉載請注明原文出處 本文章博客地址:https://blog.csdn.net/qq21497936/article/details/149054288 長沙紅胖子Qt(長沙創微智科)博文大全:開發技術集合(包含Qt實用技術、樹莓派、三維、O…

C++ namespace機制以及同時使用多個namespace可能存在的問題

在一個 .cpp 文件中使用了多個 using namespace 會怎么樣? 核心答案是:可能會導致“命名沖突(Name Collision)”和“二義性(Ambiguity)”,從而引發編譯錯誤。 當你使用 using namespace SomeNam…

基于R語言的分位數回歸技術應用

回歸是科研中最常見的統計學研究方法之一,在研究變量間關系方面有著極其廣泛的應用。由于其基本假設的限制,包括線性回歸及廣義線性回歸在內的各種常見的回歸方法都有三個重大缺陷:(1)對于異常值非常敏感,極少量的異常值可能導致結…

網絡I/O模型詳解-一次了解全部(面試經常會問到相關知識)

前言 網絡I/O模型的五種類型,其實在我們開發程序、設計程序、實現程序的方方面面都一直存在著,本文從實現原理、使用場景、優缺點、詳細的流程圖等方面進行深入的解釋,幫助大家更好的理解常用的五種網絡io模型,助力大家在工作、面…

面試150 合并K個升序鏈表

思路 對鏈表元素進行獲取,然后進行sort()排序,最后通過空節點建立鏈表法重新建立一個有序的鏈表,返回頭節點即可。 # Definition for singly-linked list. # class ListNode: # def __init__(self, val0, nextNone): # self.val …

BitDistiller:通過自蒸餾釋放 Sub-4-Bit 大語言模型的潛力

溫馨提示: 本篇文章已同步至"AI專題精講" BitDistiller:通過自蒸餾釋放 Sub-4-Bit 大語言模型的潛力 摘要 大語言模型(LLMs)的規模不斷擴大,在自然語言處理方面取得了令人矚目的進展,但這也帶來…

JavaScript 的 `querySelector` 方法詳解

querySelector 是 JavaScript 中用于選擇 DOM 元素的最強大方法之一,它允許你使用 CSS 選擇器語法來查找元素。 基本語法 // 返回文檔中第一個匹配指定 CSS 選擇器的元素 element document.querySelector(selectors);// 從指定元素后代中查找 element parentEle…

第九講:C++中的list與forward_list

目錄 1、list的介紹及使用 1.1、構造及賦值重載 1.2、迭代器 1.3、空間 1.4、訪問 1.5、修改 1.6、操作 2、迭代器失效 3、list的模擬實現 4、forward_list介紹與使用 4.1、構造及賦值重載 4.2、迭代器 4.3、容量 4.4、訪問 4.5、修改 4.6、操作 5、迭代器的分…

華為云數據庫 GaussDB的 nvarchar2隱式類型轉換的坑

bigint 與 nvarchar2比較時發生隱式類型轉換的坑 1. 案例分析 假設: table1有下面兩個字段:id:bigint, source_id nvarchar2(50)數據庫中id 的值一定大于 int4 的最大值,例如存在一條單據: id1947854462980792321&…

spring boot 集成netty,及其一些基本概念

一、基本概念 1、channel:通道,入站或者出站數據的載體 2、ChannelHandler:通道處理器,業務邏輯寫在這里面,netty 5版本將入戰和出站合并成了ChannelHandler 3、ChannelPipeline:通道里的管道,是一個或者多…

7月23日華為機考真題第一題100分

?? 點擊直達筆試專欄 ??《大廠筆試突圍》 ?? 春秋招筆試突圍在線OJ ?? bishipass.com 01. 創業投資收益優化 問題描述 K小姐剛剛大學畢業,手頭有 m m m 元資金想要進行創業投資。她發現了 k k

HTML5 跨文檔通信機制:postMessage API 詳解與應用

postMessage 是 HTML5 規范中定義的跨文檔通信(Cross-Document Messaging)API,其設計目的是解決不同源(協議、域名、端口任一存在差異)的窗口(如 iframe 嵌入的文檔、window.open 創建的新窗口)…

Kafka——Kafka中的位移提交

引言:為什么位移提交至關重要?在Kafka的分布式消息系統中,消費者組(Consumer Group)通過分區分配機制實現負載均衡和容錯,但如何準確記錄每個消費者的消費進度,是保證消息不丟失、不重復的關鍵。…

java設計模式 -【裝飾器模式】

裝飾器模式的定義 裝飾器模式(Decorator Pattern)是一種結構型設計模式,允許向一個現有對象動態添加新功能,同時不改變其結構。它通過創建包裝對象(裝飾器)來包裹原始對象,并在保持原始對象方法…

手寫字體生成器:一鍵模擬真實筆跡

軟件介紹 在自媒體創作領域,手寫體文案因其獨特的藝術感而備受青睞。然而,真實的手寫往往效率低下且效果難以保證。今天為大家推薦一款專業的手寫模擬軟件,能夠一鍵生成逼真的手寫字體效果,完美解決創作效率與質量的雙重需求。…

【Android】用 ViewPager2 + Fragment + TabLayout 實現標簽頁切換

文章目錄【Android】用 ViewPager2 Fragment TabLayout 實現標簽頁切換一、引入:什么是 ViewPager2 ?二、ViewPager2 的基礎使用1. 在布局文件 (activity_main.xml)中添加 ViewPager22. 制作一個 Fragment2.1 創建一個布局文件2.2 創建一個 Fragment 類…

嵌入式學習-土堆目標檢測(4)-day28

Pytorch中加載自定義數據集 - VOC其中需要pip install xmltodict#voc_dataset.pyimport os import torch import xmltodict from PIL import Image from torch.utils.data import Dataset import torchvision.transforms as transformsclass VOCDataset(Dataset): def __init_…

Spring MVC上下文容器在Web容器中是如何啟動的(源碼深入剖析)?

文章目錄一、雙容器架構:MVC容器與根容器的關系二、啟動全流程解析1. 啟動流程全景圖2. 初始化根容器(Root WebApplicationContext)2.1 Tomcat 中啟動入口源碼解析2.2 Spring 根上下文啟動源碼解析3. 初始化 MVC 容器(DispatcherS…

【iOS】編譯和鏈接、動靜態庫及dyld的簡單學習

文章目錄編譯和鏈接1??核心結論:一句話區分2??編譯過程:從源代碼到目標文件(.o)2.1 預處理(Preprocessing):“替換變量復制粘貼”2.2 編譯(Compilation):…