自動化測試工具 Selenium 入門指南

Selenium 是一款強大的自動化測試工具,可用于模擬用戶在瀏覽器中的各種操作。它支持多種瀏覽器(如 Chrome、Firefox、Edge 等)和多種編程語言(如 Python、Java、C# 等),廣泛應用于 Web 應用程序的自動化測試、網頁數據爬取、自動化操作等場景。

一、Selenium 的安裝

要開始使用 Selenium,首先需要安裝它。使用 Python 的 pip 包管理器可以輕松完成安裝。打開命令行終端,并執行以下命令:

pip install selenium

如果你使用的是虛擬環境,請確保在激活虛擬環境后再執行此命令。安裝完成后,你就可以在 Python 代碼中導入并使用 Selenium 庫了。

在安裝過程中,可能會遇到一些常見問題,下面是一些解決方案:

  1. 網絡問題:如果在執行pip install命令時遇到網絡連接超時或失敗的情況,可以嘗試使用國內的鏡像源來加速下載。例如,使用清華大學的 pip 鏡像:
pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple
  1. 權限問題:如果你沒有足夠的權限在全局環境中安裝包,可能會看到 "Permission denied" 錯誤。此時,可以考慮以下兩種解決方案:
    • 使用虛擬環境:虛擬環境可以讓你在項目特定的環境中安裝包,而不需要管理員權限。創建和激活虛擬環境的命令如下:
      # 創建虛擬環境
      python -m venv myenv# 激活虛擬環境(Windows)
      myenv\Scripts\activate# 激活虛擬環境(Linux/Mac)
      source myenv/bin/activate
      
    • 使用--user選項:在安裝命令后添加--user選項,將包安裝到用戶目錄下:
      pip install selenium --user
      

安裝完成后,你可以通過以下代碼驗證 Selenium 是否安裝成功:

import selenium
print(selenium.__version__)  # 打印Selenium版本號

如果能夠正常打印出版本號,說明 Selenium 已經成功安裝。

二、Edge 瀏覽器驅動的下載與配置

Selenium 需要對應的瀏覽器驅動才能控制瀏覽器。對于 Edge 瀏覽器,你需要下載 Microsoft Edge WebDriver。

  1. 確定 Edge 瀏覽器版本:打開 Edge 瀏覽器,點擊右上角的三個點(...),選擇 "幫助和反饋" > "關于 Microsoft Edge",查看版本號。版本號通常顯示為類似于 "114.0.1823.51" 的格式。

  2. 下載對應版本的 WebDriver:訪問?Microsoft Edge WebDriver 下載頁面,選擇與你瀏覽器版本匹配的 WebDriver 進行下載。具體步驟如下:

    • 在下載頁面中,找到與你 Edge 瀏覽器版本完全匹配的 WebDriver 版本。如果找不到完全匹配的版本,選擇最接近且不高于你瀏覽器版本的驅動。
    • 根據你的操作系統(Windows、macOS 或 Linux)選擇相應的下載包。
    • 下載完成后,得到一個壓縮文件(如.zip 或.msi 格式)。
  3. 解壓并放置驅動文件:將下載的壓縮包解壓,得到一個 exe 文件(如 msedgedriver.exe)。將此文件放在 Python 解釋器的根目錄中。你可以通過以下 Python 代碼查看解釋器的根目錄:

import sys
print(sys.executable)

執行上述代碼后,會輸出 Python 解釋器的路徑,例如:

C:\Python39\python.exe

在這個例子中,Python 解釋器的根目錄是C:\Python39\,你需要將msedgedriver.exe文件復制到這個目錄中。

除了將驅動文件放在 Python 解釋器根目錄外,還有其他幾種配置方式:

  • 將驅動路徑添加到系統環境變量

    1. 右鍵點擊 "此電腦",選擇 "屬性"
    2. 點擊 "高級系統設置"
    3. 在 "系統屬性" 窗口中,點擊 "環境變量" 按鈕
    4. 在 "系統變量" 列表中,找到 "Path" 變量,點擊 "編輯"
    5. 點擊 "新建",添加驅動文件所在的目錄路徑
    6. 確認所有窗口,使更改生效
  • 在代碼中顯式指定驅動路徑
    如果你不想修改系統環境變量或 Python 解釋器目錄,也可以在代碼中明確指定驅動的路徑:

    from selenium import webdriver
    from selenium.webdriver.edge.service import Service# 顯式指定驅動路徑
    edge_driver_path = "D:/webdrivers/msedgedriver.exe"  # 根據實際路徑修改
    service = Service(edge_driver_path)
    driver = webdriver.Edge(service=service)
    
三、使用 Selenium 打開瀏覽器

下面是一個簡單的 Python 代碼示例,展示如何使用 Selenium 打開 Edge 瀏覽器并訪問百度網站:

from selenium import webdriver
from selenium.webdriver.edge.service import Service
import time# 設置Edge驅動的路徑
edge_driver_path = "msedgedriver.exe"  # 如果已放在Python根目錄,可直接這樣寫# 創建Service對象
service = Service(edge_driver_path)# 創建Edge瀏覽器實例
driver = webdriver.Edge(service=service)try:# 打開百度網站driver.get("https://www.baidu.com")# 獲取頁面標題并打印title = driver.titleprint(f"當前頁面標題: {title}")# 等待5秒鐘,以便觀察time.sleep(5)except Exception as e:print(f"發生錯誤: {e}")
finally:# 關閉瀏覽器driver.quit()

在上述代碼中,我們首先導入了必要的模塊,然后創建了一個 Edge 瀏覽器的 Service 對象,接著使用該 Service 創建了瀏覽器實例。通過get方法打開了百度網站,使用time.sleep讓程序暫停 5 秒以便我們觀察,最后使用quit方法關閉了瀏覽器。

讓我們詳細分析一下這段代碼:

  1. 導入模塊

    • webdriver:提供了各種瀏覽器的驅動類
    • Service:用于配置和啟動瀏覽器驅動服務
    • time:用于添加延時,方便觀察程序執行過程
  2. 創建瀏覽器實例

    • 通過Service類指定驅動路徑
    • 使用webdriver.Edge創建 Edge 瀏覽器實例
  3. 瀏覽器操作

    • driver.get(url):打開指定 URL 的網頁
    • driver.title:獲取當前頁面的標題
    • driver.quit():關閉瀏覽器并終止驅動服務
  4. 異常處理

    • 使用try-except-finally結構確保即使發生異常,瀏覽器也能被正確關閉
?????四、Selenium 網頁圖片提取實戰

下面我們通過一個實戰項目,展示如何使用 Selenium 從網頁上提取圖片。我們以 Unsplash 網站(一個提供高質量免費圖片的網站)為例,提取搜索結果中的圖片鏈接。

from selenium import webdriver
from selenium.webdriver.edge.options import Options
import re
import requests
import time
edgetest=Options() #Option對象用于對瀏覽器行為與屬性的配置
#binary_location指明驅動的瀏覽器二進制文件地址,因為用戶的默認的瀏覽器不一定是edge瀏覽器
edgetest.binary_location=r"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe"
driver=webdriver.Edge(options=edgetest)
driver.get('https://www.ptpress.com.cn/search?keyword=python&jc=')#進入人民郵電出版社界面
time.sleep(1)#讓程序休眠1秒,讓頁面加載出來,不加可能導致頁面未加載出來就退出
#正則表達式從源碼中提取圖片地址
ls=re.findall(r'<img src="(.+?jpg)"></div>',driver.page_source)
i=1
for url in ls:r=requests.get(url)with open('zxc\\'+str(i)+'.jpg','wb') as f:#在當前的相對路徑下已經創建了zxc這個文件夾。f.write(r.content)i+=1

這個代碼實現了以下功能:

1.?瀏覽器配置與初始化

  • 指定瀏覽器路徑:通過Options類設置 Edge 瀏覽器的安裝路徑(默認為系統默認位置)。

  • 創建瀏覽器實例:啟動 Edge 瀏覽器并準備訪問網頁。

2.?訪問目標網頁

  • 搜索關鍵詞:打開人民郵電出版社的搜索頁面,自動填入關鍵詞python,并加載搜索結果。

  • 強制等待:使用time.sleep(1)暫停 1 秒,確保頁面元素加載完成(此方法不夠可靠,后續可優化)。

3.?提取圖片 URL

  • 獲取頁面源碼:通過driver.page_source獲取當前頁面的 HTML 代碼。

  • 正則表達式匹配:使用正則表達式<img src="(.+?jpg)"></div>提取所有圖片 URL。

    • 該正則假設圖片標簽緊跟在</div>前,且 URL 以.jpg結尾。

4.?下載并保存圖片

  • 遍歷 URL 列表:對每個匹配到的圖片 URL,使用requests.get()發送 HTTP 請求下載圖片內容。

  • 保存文件:將圖片內容寫入本地文件,命名為1.jpg,?2.jpg等,保存在當前目錄下的zxc文件夾中。

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

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

相關文章

Hystrix與Resilience4j在微服務熔斷降級中的應用對比與實戰

Hystrix與Resilience4j在微服務熔斷降級中的應用對比與實戰 1. 問題背景介紹 在微服務架構中&#xff0c;服務之間的依賴使得鏈路調用更加復雜。一旦某個下游服務發生故障或響應延遲&#xff0c;可能導致整個調用鏈阻塞甚至雪崩&#xff0c;影響系統可用性。熔斷&#xff08;Ci…

PostgreSQL數據庫集群如何進行自動化性能監測?

前言&#xff1a;在這個數據爆炸的時代&#xff0c;PostgreSQL數據庫集群就像是我們的"數據寶庫"。但是&#xff0c;再好的寶庫也需要有專業的"保安"來守護。今天我們就來聊聊如何給PostgreSQL集群配備一套智能的"保安系統"——自動化性能監測。…

OneCode體系架構深度剖析:設計哲學與AI增強之道

引言 在企業級應用開發領域&#xff0c;架構設計決定了系統的擴展性、可維護性與演進能力。OneCode作為一站式開發平臺&#xff0c;其架構設計蘊含著對復雜業務場景的深刻理解與技術選型的前瞻性思考。本文將從六個維度系統剖析OneCode的架構設計理念&#xff0c;揭示其模塊劃分…

AWS中國區資源成本優化全面指南:從理論到實踐

引言:為什么AWS中國區成本優化如此重要? 在數字化轉型的浪潮中,越來越多的中國企業選擇AWS中國區作為其云計算服務提供商。然而,隨著業務規模的擴大,云資源成本往往成為企業關注的焦點。有效的成本優化不僅能夠直接降低IT支出,還能提高資源利用效率,為企業創造更大的商…

Redis中什么是看門狗機制

在 Redis 中&#xff0c;“看門狗機制”&#xff08;Watchdog Mechanism&#xff09;不是 Redis 的核心機制之一&#xff0c;但它在一些場景中起到了重要作用&#xff0c;尤其是在使用 Redlock 分布式鎖實現 或在 Redis Enterprise 等高級用法中。一、看門狗機制的通用含義看門…

[MRCTF2020]PYWebsite

function enc(code){hash hex_md5(code);return hash;}function validate(){var code document.getElementById("vcode").value;if (code ! ""){if(hex_md5(code) "0cd4da0223c0b280829dc3ea458d655c"){alert("您通過了驗證&#xff01;…

AWS S3事件通知實戰:從配置到生產的完整指南

引言 在現代云架構中,事件驅動設計已成為構建可擴展、高可用系統的核心模式。AWS S3作為對象存儲服務,其事件通知功能為我們提供了強大的自動化處理能力。本文將基于一個真實的圖片處理系統案例,詳細介紹如何正確配置和使用S3事件通知。 業務場景 我們開發了一個圖片處理…

[AI-video] Web UI | Streamlit(py to web) | 應用配置config.toml

鏈接&#xff1a;https://reccloud.cn/start?positiontab1 docs&#xff1a;AI creates videos MoneyPrinterTurbo 是一個自動化短視頻創作流程的開源項目。 它通過輸入主題或關鍵詞&#xff0c;利用人工智能&#xff08;大語言模型&#xff09;生成腳本和搜索條件&#xff0…

CommonJS 功能介紹

CommonJS是JavaScript的模塊化規范&#xff0c;主要用于服務器端&#xff08;如Node.js&#xff09;的模塊化開發&#xff0c;其核心功能和特點如下&#xff1a; 一、核心功能模塊定義與導出 module.exports&#xff1a;用于導出模塊的內容&#xff0c;可以是函數、對象、變量等…

3D材質總監的“光影魔法”:用Substance Sampler AI,“擦除”照片中的光影

在三維視覺藝術的創作中&#xff0c;我們始終在探索一對核心的“對立統一”&#xff1a;一方面是**“現實世界的光照”&#xff08;Real-World Lighting&#xff09;&#xff0c;它被固定、“烘焙”在一張照片的像素之中&#xff1b;另一方面是“虛擬世界的光照”&#xff08;V…

從高斯噪聲的角度分析MAE和MSE

文章目錄1. MAE與MSE的本質區別2. 高斯噪聲下的統計特性3. MAE導致稀疏解的內在機制4. 對比總結1. MAE與MSE的本質區別 MAE&#xff08;Mean Absolute Error&#xff09;和MSE&#xff08;Mean Squared Error&#xff09;是兩種常用的損失函數&#xff0c;它們的數學形式決定了…

AR智能巡檢:制造業零缺陷安裝的“數字監工”

在制造業中&#xff0c;設備安裝與組裝環節的準確性是產品質量和生產效率的關鍵。傳統的人工巡檢和紙質作業指導書容易因人為疏忽、經驗不足或信息滯后導致安裝錯誤&#xff0c;進而引發返工、延誤甚至安全事故。然而&#xff0c;隨著增強現實&#xff08;AR www.teamhelper.cn…

js最簡單的解密分析

js最簡單的解密分析 一、JavaScript 代碼保護技術簡介 ? 為什么要保護 JavaScript 代碼&#xff1f; JavaScript 是前端語言&#xff0c;代碼在瀏覽器中是完全可見的。這意味著&#xff1a; 別人可以輕松查看你的核心算法或業務邏輯頁面上的接口地址、加密邏輯等容易被抓包分析…

React強大且靈活hooks庫——ahooks入門實踐之開發調試類hook(dev)詳解

什么是 ahooks&#xff1f; ahooks 是一個 React Hooks 庫&#xff0c;提供了大量實用的自定義 hooks&#xff0c;幫助開發者更高效地構建 React 應用。其中開發調試類 hooks 是 ahooks 的一個重要分類&#xff0c;專門用于開發調試階段&#xff0c;幫助開發者追蹤組件更新和副…

React強大且靈活hooks庫——ahooks入門實踐之副作用類hook(effect)詳解

什么是 ahooks&#xff1f; ahooks 是一個 React Hooks 庫&#xff0c;提供了大量實用的自定義 hooks&#xff0c;幫助開發者更高效地構建 React 應用。其中副作用類 hooks 是 ahooks 的一個重要分類&#xff0c;專門用于處理各種副作用操作&#xff0c;如定時器、防抖、節流等…

SpringBoot一Web Flux、函數式Web請求的使用、和傳統注解@Controller + @RequestMapping的區別

一、函數式 Web 在 Spring Boot 中&#xff0c;使用函數式 Web&#xff08;Function-based Web&#xff09;可以通過 RouterFunction 和 HandlerFunction 來定義路由和請求處理邏輯。這種方式與傳統的注解驅動的方式不同&#xff0c;它更加簡潔&#xff0c;并且適合響應式編程。…

Vue+Cesium快速配置指南

安裝必要依賴在項目根目錄下運行以下命令安裝vue-cesium和cesium&#xff1a;npm install vue-cesium3.1.4 cesium1.84配置Vite在vite.config.js文件中添加以下配置&#xff1a;import { defineConfig } from vite import vue from vitejs/plugin-vue import { resolve } from …

礦業自動化破壁者:EtherCAT轉PROFIBUS DP網關的井下實戰

在深井鉆機的轟鳴、礦石輸送帶的奔流與通風設備的不息運轉中&#xff0c;礦業生產的脈搏強勁跳動。然而&#xff0c;這片創造價值的土地&#xff0c;卻為自動化技術的深入設置了嚴苛的考場&#xff1a;信息孤島林立&#xff1a; 高效現代的EtherCAT控制系統與井下大量穩定服役的…

SpringBoot+Loki4j+Loki+Grafana搭建輕量級日志系統

文章目錄前言一、組件介紹&#xff08;一&#xff09;Loki特點架構適用場景總結&#xff08;二&#xff09;Loki4j特點&#xff08;三&#xff09;Grafana特點適用場景二、組件配置&#xff08;一&#xff09;Loki&#xff08;二&#xff09;Grafana三、項目搭建參考文章前言 …

SpringCloud之Config

SpringCloud之Config 推薦網站&#xff1a;https://www.springcloud.cc/spring-cloud-dalston.html#_spring_cloud_config 1. 什么是 Spring Cloud Config Spring Cloud Config 是 Spring 官方提供的 分布式配置中心 組件&#xff0c;用來 集中管理、動態下發、版本控制 所有微…