Selenium基礎操作方法詳解


Selenium基礎操作方法詳解:從零開始編寫自動化腳本(附完整代碼)


引言

Selenium是自動化測試和網頁操作的利器,但對于新手來說,掌握基礎操作是成功的第一步。本文將手把手教你使用Selenium完成瀏覽器初始化、元素定位、表單操作等核心功能,并提供可直接運行的Python代碼示例,助你快速入門!


一、環境準備

在開始前,確保已安裝以下內容:

  1. 安裝Selenium庫
    pip install selenium
    
  2. 下載瀏覽器驅動
    • Chrome驅動:ChromeDriver下載地址
    • Chrome最新:ChromeDriver新版本下載地址
    • Firefox驅動:GeckoDriver下載地址
    • 將驅動文件放在系統路徑(如項目目錄)或配置環境變量。
    • 站內chromedriver下載地址:站內ChromeDriver下載

二、初始化瀏覽器驅動

以Chrome為例,啟動瀏覽器并打開網頁:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service# 指定驅動路徑(根據實際路徑修改)
service = Service(executable_path="chromedriver.exe")  # 根據實際路徑修改
driver = webdriver.Chrome(service=service)# 打開網頁
driver.get("https://www.example.com")# 最大化瀏覽器窗口
driver.maximize_window()

三、元素定位與操作

1. 八大元素定位方式
from selenium.webdriver.common.by import By# 通過ID定位(最常用)
element = driver.find_element(By.ID, "username")# 通過Class Name定位
element = driver.find_element(By.CLASS_NAME, "input-field")# 通過標簽名定位
element = driver.find_element(By.TAG_NAME, "input")# 通過Name屬性定位
element = driver.find_element(By.NAME, "password")# 通過鏈接文本定位(精確匹配)
element = driver.find_element(By.LINK_TEXT, "點擊登錄")# 通過部分鏈接文本定位(模糊匹配)
element = driver.find_element(By.PARTIAL_LINK_TEXT, "登錄")# 通過CSS選擇器定位(推薦)
element = driver.find_element(By.CSS_SELECTOR, "#submit-btn .icon")# 通過XPath定位(復雜結構適用)
element = driver.find_element(By.XPATH, "//div[@id='header']//a[text()='首頁']")
2. 輸入文本與點擊按鈕
# 在輸入框輸入內容
driver.find_element(By.ID, "search-box").send_keys("Selenium教程")# 點擊按鈕
driver.find_element(By.CSS_SELECTOR, "#search-button").click()# 清空輸入框
driver.find_element(By.ID, "search-box").clear()

四、頁面導航與窗口操作

# 刷新頁面
driver.refresh()# 后退到上一頁
driver.back()# 前進到下一頁
driver.forward()# 獲取當前頁面標題
print(driver.title)# 獲取當前URL
print(driver.current_url)# 切換瀏覽器標簽頁
for handle in driver.window_handles:driver.switch_to.window(handle)  # 切換到最新打開的標簽頁

五、處理表單與下拉菜單

from selenium.webdriver.support.select import Select# 選擇單選按鈕
driver.find_element(By.CSS_SELECTOR, "input[type='radio'][value='male']").click()# 勾選復選框
checkbox = driver.find_element(By.ID, "agree-terms")
if not checkbox.is_selected():checkbox.click()# 操作下拉菜單
dropdown = Select(driver.find_element(By.ID, "country"))
dropdown.select_by_visible_text("中國")       # 按文本選擇
dropdown.select_by_value("CN")              # 按value屬性選擇
dropdown.select_by_index(1)                 # 按索引選擇

六、等待機制

1. 強制等待(不推薦,僅用于測試)
import time
time.sleep(3)  # 強制等待3秒
2. 隱式等待(全局設置)
driver.implicitly_wait(10)  # 最多等待10秒,找不到元素則報錯
3. 顯式等待(推薦)
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC# 等待元素可見
element = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.ID, "loading"))
)# 等待元素可點擊
button = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.ID, "submit-btn"))
)

七、截圖與關閉瀏覽器

# 截取整個頁面并保存
driver.save_screenshot("screenshot.png")# 關閉當前標簽頁
driver.close()# 完全退出瀏覽器
driver.quit()

八、完整案例:自動化搜索

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC# 初始化瀏覽器
service = Service(executable_path="chromedriver.exe")  # 根據實際路徑修改
driver = webdriver.Chrome(service=service)
driver.get("https://www.baidu.com")# 輸入關鍵詞并搜索
search_box = driver.find_element(By.ID, "kw")
search_box.send_keys("Selenium自動化測試")
search_box.submit()  # 提交表單# 等待結果加載
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR, "h3"))
)# 打印第一條結果的標題
results = driver.find_elements(By.CSS_SELECTOR, "h3")
print("第一條結果:", results[0].text)# 關閉瀏覽器
driver.quit()

注意:示例代碼 chromedriver.exe 放置在腳本的同級目錄下,請根據實際情況修改。
在這里插入圖片描述


結語

通過本文的代碼示例,你已經掌握了Selenium的基礎操作,包括瀏覽器控制、元素定位、表單填寫和等待機制。接下來,可以嘗試以下練習:

  1. 編寫一個自動化登錄腳本
  2. 爬取動態加載的網頁數據
  3. 實現多標簽頁切換操作

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

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

相關文章

python同步mysql數據

python寫了一個簡單的mysql數據同步腳本,只作為學習練習,大佬勿噴 # -*- coding: utf-8 -*- """ Time:2025/5/29 14:38 Auth:HEhandsome """ import pymysql from pymysql import Connectclass Mysql:def __init__(self):#源數據庫self.sou_hos…

手撕Java+硅基流動實現MCP服務器教程

手撕Java硅基流動實現MCP服務器教程 一、MCP協議核心概念 MCP是什么 MCP 是 Anthropic (Claude) 主導發布的一個開放的、通用的、有共識的協議標準。 ● MCP 是一個標準協議,就像給 AI 大模型裝了一個 “萬能接口”,讓 AI 模型能夠與不同的數據源和工…

.net consul服務注冊與發現

.NET中Consul服務注冊與發現的技術實踐 在微服務架構中,服務的注冊與發現是至關重要的環節,它能幫助各個服務之間實現高效的通信和協作。Consul作為一款功能強大的工具,為我們提供了優秀的服務注冊與發現解決方案。今天,我們就來…

大數據量下的數據修復與回寫Spark on Hive 的大數據量主鍵沖突排查:COUNT(DISTINCT) 的陷阱

背景與問題概述 這一周(2025-05-26-2026-05-30)我在搞數據擬合修復優化的任務,有大量的數據需要進行數據處理及回寫,大概一個表一天一分區有五六千萬數據,大約一百多列的字段。 具體是這樣的我先取檔案&#x…

基于 AUTOSAR 的域控產品軟件開發:從 CP 到 AP 的跨越

基于 AUTOSAR 的域控產品軟件開發:從 CP 到 AP 的跨越 一、AUTOSAR AP 架構解析:面向智能汽車的自適應框架 (一)引言 隨著汽車智能化向 L3 演進,傳統 AUTOSAR CP(經典平臺)在實時性、動態性和…

Nacos 配置管理案例:nacos-spring-cloud-config-example詳解

一、結構說明:基于Spring Cloud Alibaba的微服務示例 nacos-spring-cloud-config-example : 服務提供者 二、技術棧:Spring BootSpring CloudSpring Cloud Alibaba Nacos Actuator(可選:監控) 三、使用環境 安裝…

BUUCTF[ACTF2020 新生賽]Include 1題解

BUUCTF[ACTF2020 新生賽]Include 1題解 題目分析:知識準備:php://filter 過濾器參數說明常用過濾器功能對照表 開始解題:原理解析構造payload 總結 題目分析: 生成靶機,打開網址,查看源碼,抓包…

vscode + cmake + ninja+ gcc 搭建MCU開發環境

vscode cmake ninja gcc 搭建MCU開發環境 文章目錄 vscode cmake ninja gcc 搭建MCU開發環境1. 前言2. 工具安裝及介紹2.1 gcc2.1.1 gcc 介紹2.1.2 gcc 下載及安裝 2.2 ninja2.2.1 ninja 介紹2.2 ninja 安裝 2.3 cmake2.3.1 cmake 介紹2.3.2 cmake 安裝 2.4 VScode 3. 上手…

九(1). 引用作為函數參數的使用

引用作為參數使用 在 C 中,引用作為函數參數是一種高效且靈活的參數傳遞方式,它避免了拷貝開銷,同時允許函數直接操作原始數據。 以下是關于引用作為參數的詳細使用指南和最佳實踐: 1. 引用作為參數的基本用法 (1) 普通引用&…

Linux多路TTS混音播放:讓多個語音同時清晰可聽

Linux多路TTS混音播放:讓多個語音同時清晰可聽 為什么需要多路混音播放?技術原理概述第一步:配置ALSA dmix混音插件為什么需要dmix?具體配置步驟第二步:生成TTS語音文件為什么需要格式轉換?Python生成腳本第三步:實現多路同時播放播放器設計原理Python實現代碼多路同時播…

Spring AI 1.0 GA 深度解析:構建企業級AI應用的全棧實踐指南

目錄 Spring AI 1.0 核心架構解析統一接口與多模型支持檢索增強生成(RAG)全流程實戰對話記憶與工具調用進階模型評估與可觀測性體系企業級應用案例與最佳實踐未來演進與技術展望1. Spring AI 1.0 核心架構解析 1.1 技術架構演進 #mermaid-svg-ymTZMAaxOwd4OAMu {font-family…

Docker 安裝 Redis 容器

系列文章目錄 文章目錄 系列文章目錄前言1 獲取redis鏡像2 創建和部署redis容器3 查看redis是否啟動成功4 使用Redis客戶端驗證連接總結 前言 搭建環境: ubuntu22.04.05 docker redis: 7.0.10 測試環境: windows: win11 Redis測試客戶端:Ti…

學習vue3階段性復習(插槽,Pinia,生命周期)

目錄 插槽(匿名插槽,具名插槽) 插槽概述 匿名插槽 具名插槽 Pinia(統一管理,共享數據) pinia概述 安裝和使用Pinia 1 使用命令下載Pinia 2 再main.js中導入,注冊到vue框架中 3使用pinia 持久化存儲插件 1 第一步&…

嵌入式Linux 期末復習指南(上)

鑒于互聯網上針對本科目相關復習視頻及資料過少, 撰寫本篇期末復習指南用作期末復習知識點掃盲,以應對本科期末考試及格之用。 由于任課老師并透露考試范圍或任何有關試卷的相關信息,本篇指南基于教材、上機實驗報告及作者經驗編寫&#xff0…

VScode ios 模擬器安裝cocoapods

使用 Homebrew 安裝(推薦) 如果你有 Homebrew,直接用它安裝更穩定: brew install cocoapods

Python趣學篇:用Pygame打造絢爛流星雨動畫

名人說:路漫漫其修遠兮,吾將上下而求索。—— 屈原《離騷》 創作者:Code_流蘇(CSDN)(一個喜歡古詩詞和編程的Coder😊) 專欄介紹:《Python星球日記》 目錄 一、項目簡介與效果展示二、技術棧與核…

可視化大屏通用模板Axure原型設計案例

本文將介紹一款基于Axure設計的可視化大屏通用模板,適用于城市、網絡安全、園區、交通、社區、工業、醫療、能源等多個領域。 模板概述 這款Axure可視化大屏通用模板集成了多種數據展示模塊和組件,旨在為用戶提供一個靈活、可定制的數據展示平臺。無論…

20250530-C#知識:萬物之父Object

C#知識:萬物之父Object Object類(即object)是所有類的基類,這里面的方法還是需要好好了解一下。 1、Object類 是頂級父類,其他類默認都是Object類的子類(自定義類也會默認繼承Object類)可以用O…

蘋果應用開發詳細教程(2025最新版)

蘋果應用開發詳細教程(2025最新版) 第一階段:開發環境搭建 硬件準備 Mac電腦(macOS Monterey 12或更高版本)iPhone/iPad(真機調試建議iOS 16+)軟件安裝 # 通過App Store安裝Xcode xcode-select --installXcode 15+(包含Swift 5.9編譯器)安裝CocoaPods(依賴管理工具)…

flutter項目遷移空安全

重中之重 備份好項目文件,甚至連已經加載好的flutter庫也可以備份。環境包升級 2.1 不要直接換成flutter:3.0以上的版本,這樣做既有基本的庫兼容問題,又有空安全下的語法問題(整個項目中需要增加 late、?、!的語法錯誤,一片報錯的…