python3 + selenium webdriver自動化測試啟動不同瀏覽器

selenium webdriver自動化測試啟動不同瀏覽器

  • selenium webdriver 介紹
  • Selenium WebDriver 進行自動化測試的一般流程
  • 瀏覽器驅動下載
  • 瀏覽器驅動的安裝
  • chrome、edge、Firefox、Opera、Safari、phantomjs 應用
  • Headless Chrome 、Headless Firefox 應用

selenium webdriver 介紹

Selenium WebDriver 是 Selenium 項目中的一個核心組件,它提供了跨多種瀏覽器的自動化測試能力。Selenium WebDriver 旨在替代之前的 Selenium RC (Remote Control) 模型,為開發人員和測試人員提供了更簡單、更高效的自動化測試解決方案。

Selenium WebDriver 主要特點如下:

  • 跨瀏覽器支持:
    Selenium WebDriver 支持主流瀏覽器,如 Chrome、Firefox、Safari、Edge 等,并且可以在不同的操作系統(Windows、macOS、Linux)上運行。

  • 多語言支持:
    Selenium WebDriver 提供了 Java、Python、C#、Ruby、JavaScript 等多種編程語言的 API,開發人員可以選擇熟悉的語言來編寫測試用例。

  • 驅動程序架構:
    Selenium WebDriver 采用驅動程序的架構,每種瀏覽器都需要對應的驅動程序(如 ChromeDriver、GeckoDriver 等)來控制瀏覽器的自動化操作。

  • API 豐富:
    Selenium WebDriver 提供了大量的 API 供開發人員使用,可以執行各種Web元素定位、交互、導航、斷言等操作。

  • 靈活性和可擴展性:
    Selenium WebDriver 可以集成到各種測試框架和持續集成工具中,如 JUnit、pytest、Jenkins 等,提高了測試的靈活性和可維護性。

  • 支持無頭瀏覽器:
    Selenium WebDriver 除了支持傳統的有界面瀏覽器,還支持無頭瀏覽器(如 PhantomJS、Headless Chrome/Firefox),可以在無界面環境下進行自動化測試。

Selenium WebDriver 進行自動化測試的一般流程

  • 安裝并配置好對應瀏覽器的驅動程序。
  • 使用 WebDriver API 創建瀏覽器實例,并打開待測試的網頁。
  • 定位頁面元素,并對這些元素執行各種操作,如輸入文本、點擊按鈕等。
  • 對測試結果進行斷言驗證。
  • 關閉瀏覽器實例,完成測試。

瀏覽器驅動下載

瀏覽器驅動名稱備注
Chromechromedriver瀏覽器版本需要和驅動版本對應
Firefoxgeckodriver瀏覽器版本需要和驅動版本對應
Edgeedgedriver瀏覽器版本需要和驅動版本對應
IEIEdriverServer瀏覽器版本需要和驅動版本對應
safarisafariDriver自帶webdriver
operaoperadriverOpera基于Chromium開發
phantomjsphantomjs無UI界面,2018年停止了開發和維護

瀏覽器驅動的安裝

1.下載對應瀏覽器驅動成功后
2.以ubuntu 為例,將下載后的驅動移動到 /usr/local/bin/ 目錄下
3.檢查瀏覽器驅動與瀏覽器版本是否一致
可以雙擊驅動程序,未出現閃退證明版本吻合

chrome、edge、Firefox、Opera、Safari、phantomjs 應用

from selenium import webdriverdef test_webdriver():driver = webdriver.Chrome()# driver=webdriver.Edge()# driver = webdriver.Firefox()# driver = webdriver.Opera()# driver = webdriver.Safari()# driver = webdriver.PhantomJS()# 需要訪問的地址driver.get("http://xxxx")# 對頁面進行操作driver.find_element_by_xpath("//a[@id='LoginLink']").click()# 運行結束關閉整個瀏覽器窗口driver.close()# 調用該函數
test_webdriver()

python xxxx.py 運行即可

Headless Chrome 、Headless Firefox 應用

Headless Chrome 是一種無界面的Chrome瀏覽器
Headless Firefox是一種無界面的Firefox瀏覽器

from selenium import webdriver
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.chrome.options import Optionsdef test_webdriver():options = Options()options.add_argument("--headless")driver = webdriver.Chrome(options=options)# driver = webdriver.Firefox(options=options)# 需要訪問的地址driver.get("http://xxx")# 對頁面進行操作driver.find_element_by_xpath("//a[@id='LoginLink']").click()# 運行結束關閉整個瀏覽器窗口driver.close()# 調用該函數
test_webdriver()

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

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

相關文章

shell命令運行原理及Linux權限問題

目錄 shell命令以及運行原理用戶管理添加用戶刪除用戶sudo Linux權限的概念Linux權限管理文件訪問者的分類(人)文件類型和訪問權限(事物屬性)文件權限值的表示方法文件訪問權限的相關設置方法 目錄的權限粘滯位 shell命令以及運行…

備考AMC8和AMC10競賽,吃透2000-2024年1850道真題和解析(持續)

多做真題,吃透真題和背后的知識點是備考AMC8、AMC10有效的方法之一,通過做真題,可以幫助孩子找到真實競賽的感覺,而且更加貼近比賽的內容,可以通過真題查漏補缺,更有針對性的補齊知識的短板。 今天我們繼續…

PostgreSQL基本使用Schema

參考文章:PostgreSQL基本使用(3)Schema_pg數據庫查詢schema-CSDN博客 PostgreSQL 模式(Schema)可以理解為是一個表的集合(或者所屬者)。 例如:在 MySQL 中,Scheam 是庫&…

gcc源碼分析(AST抽象語法樹)

文章目錄 三、AST相關1、AST(抽象語法樹)1.1 樹結點的聲明1.2 樹結點的結構1.2.1 tree_node聯合體1.2.2 tree_base結構體1.2.3 tree_common結構體1.2.4 常量結構體1.2.5 **標識符節點**2、符號綁定,作用域與block樹節點2.1 lang_identifier結構體2.2 c_binding結構體2.3 scop…

HLS視頻加密,讓您的視頻內容更安全!

背景介紹 HLS視頻加密是一種基于HTTP Live Streaming(HLS)協議的加密技術。它的核心思想是將視頻切片進行加密處理,在客戶端播放時需要先獲取解密密鑰才能正常偶發。通過這種方式,HLS加密可以有效防止未經授權的第三方竊取視頻內…

測試短信推薦參考

短信測試參考 國外: smstome 支持多個國家號碼 官網地址: https://smstome.com/ quackr.io 支持多個國家號碼 官網地址: https://quackr.io/ receive-smss 支持多個國家號碼 地址: https://receive-smss.com/ receive-sms-fr…

C#字典的常用方法

C#的字典(Dictionary)類是一個通用的集合類,它實現了鍵值對的存儲和訪問。以下是一些常用的字典方法: Add(key, value):向字典中添加一個指定的鍵值對。Remove(key):從字典中移除具有指定鍵的元素。Contai…

LLM大模型的7種推理框架分析

LLM的7種推理框架 Hugging Face的transformers 這是一個Python庫,可以簡化本地運行LLM的過程。 Transformers的優點: 自動模型下載提供代碼片段非常適合實驗和學習 Transformers的缺點: 需要對ML和NLP有深入了解需要編碼和配置技能 2.L…

深度學習之基于Tensorflow低光增強的深層Retinex分解

歡迎大家點贊、收藏、關注、評論啦 ,由于篇幅有限,只展示了部分核心代碼。 文章目錄 一項目簡介 二、功能三、系統四. 總結 一項目簡介 一、項目背景與意義 在圖像處理領域,低光照環境下的圖像增強是一個具有挑戰性的問題。為了提高圖像的可…

紐曼新品X1000:輕巧便攜僅重9.9公斤的1度電應急電源

在戶外救援行動和應急設備中,電力供應的穩定性和安全性直接影響到救援工作的效率和成功率。在現代救援工作中,常見的光學聲波探測儀、通信聯絡設備、氣象檢測儀、生命探測儀、照明設備等裝備均需有持續的電力供應,才能保障救援工作的有序開展…

西門子WINCC8.0VBS腳本學習講解

WinCC VBS腳本置位/復位/取反 二進制變量 "TAG1_BOOL1" 進行置位復位取反操作 步驟:按鈕-->對象屬性-->事件-->單擊鼠標VBS動作填入代碼如下: 對二進制變量進行復位 對二進制變量進行置位 對二進制變量進行取反 VBS腳本數學運算/讀寫批處理 …

第十六講:數據在內存中的存儲

第十六講:數據在內存中的存儲 1.整數在內存中的存儲1.1存儲方式1.2大小端字節序1.3大小端字節序排序規則1.4為什么要有大小端1.5練習1.5.1練習11.5.2練習21.5.3練習31.5.4練習41.5.5練習51.5.6練習61.5.7練習7 2.浮點數在內存中的存儲2.1練習2.2浮點數的存儲2.3浮點…

如何將數據從一部手機傳輸到另一部手機[安全快速]

概括 手機之間無需使用藍牙即可傳輸文件,配合專業的文件傳輸工具更高效。本文將向您介紹幾種使用不同的數據傳輸工具快速安全地將數據從一部手機傳輸到另一部手機的方法,特別是當有大文件或大量文件時。現在,我們來看看。 需要在朋友或家人之…

Rust 賦能前端 -- 寫一個 File 轉 Img 的功能

所有耀眼的成績,都需要苦熬,熬得過,出眾;熬不過,出局 大家好,我是柒八九。一個專注于前端開發技術/Rust及AI應用知識分享的Coder 此篇文章所涉及到的技術有 Rustwasm-bindgen/js-sys/web-sysWeb WorkerWebAssemblyWebpack/Vite配置WebAssemblyOffscreenCanvas腳手架生成項…

校園二手書交易|基于SprinBoot+vue的校園二手書交易管理系統(源碼+數據庫+文檔)

校園二手書交易管理系統 目錄 基于SprinBootvue的校園二手書交易管理系統 一、前言 二、系統設計 三、系統功能設計 1系統功能模塊 2管理員功能模塊 3 賣家用戶功能模塊 4 用戶功能模塊 四、數據庫設計 五、核心代碼 六、論文參考 七、最新計算機畢設選題推薦 八…

Linux:iptables防火墻部署優化之連接轉移(目的地地址轉化)

Linux:iptables防火墻部署優化之連接轉移(目的地地址轉化) 文章目錄 Linux:iptables防火墻部署優化之連接轉移(目的地地址轉化)node1操作檢測ip情況關閉firewalld防火墻服務,并鎖定該服務開啟ip…

什么是分布式會話

分布式會話是指在分布式系統中實現用戶會話管理的一種機制。在傳統的單服務器架構中,用戶的會話數據通常存儲在單個服務器或應用服務器的內存中。然而,隨著業務的發展和用戶量的增加,單服務器架構往往無法滿足高可用性和高并發的需求&#xf…

Minio WebUploader上傳文件的高級用法之進度條顯示、文件過濾、圖片預覽、圖片壓縮

系列文章目錄 第十章 Minio WebUploader上傳文件的高級用法之進度條顯示、文件過濾、圖片預覽、圖片壓縮 Minio WebUploader上傳文件的高級用法之進度條顯示、文件過濾、圖片預覽、圖片壓縮 系列文章目錄進度條顯示文件過濾圖片預覽圖片壓縮 進度條顯示 使用進程文件上傳時&a…

基于springboot+html的二手交易平臺(附源碼)

基于springboothtml的二手交易平臺 介紹部分界面截圖如下聯系我 介紹 本系統是基于springboothtml的二手交易平臺,數據庫為mysql,可用于畢設或學習,附數據庫 部分界面截圖如下 聯系我 VX:Zzllh_

java Iterable和 Iterator接口區別和聯系

Iterable 和 Iterator 是 Java 集合框架中用于遍歷集合元素的兩個接口,它們之間既有區別也有聯系。下面詳細介紹它們的區別和聯系。 Iterable 接口 定義 Iterable 接口位于 java.lang 包中,定義如下: public interface Iterable<T> {Iterator<T> iterator()…