主頁 >  其他 > selenium 4(python)快速入門-1 簡介

selenium 4(python)快速入門-1 簡介

2023-04-23 07:35:24 其他

Selenium歷史

Selenium為瀏覽器自動化提供了先進的功能,從業者通常用它來實作網路應用的端到端測驗,Selenium由三個核心組件組成: WebDriver, Grid, 和 IDE,

Jason Huggins和Paul Hammant于2004年在Thoughtworks作業時創建了Selenium,他們選擇了 "Selenium "這個名字作為與惠普公司開發的現有測驗框架Mercury的對應物,這個名字很有意義,因為化學物質硒以減少汞的毒性而聞名,

最初版本的Selenium(今天被稱為Selenium Core)是一個JavaScript庫,在網路應用中模擬用戶操作,Selenium Core解釋Selenese命令來實作任務,這些命令被編碼為由三部分組成的HTML表格:命令(在網路瀏覽器中執行的動作,如打開URL或點擊鏈接)、目標(識別網路元素的定位器,如特定組件的屬性)和值(可選資料,如輸入到網路表格欄位中的文本),

Huggins和Hammant在Selenium Remote Control(RC)的新專案中給Selenium Core增加了腳本層,Selenium RC遵循C-S架構,客戶端使用一種系結語言(如Python或JavaScript)通過HTTP向Selenium RC服務器的中間代理發送Selenese命令,該服務器按需啟動網路瀏覽器,將Selenium Core庫注入網站,并將客戶的請求代理給Selenium Core,此外,Selenium RC服務器將目標網站掩蓋在與注入的Selenium Core庫相同的本地URL上,以避免同源策略問題,這種方法在當時是改變了瀏覽器自動化的游戲規則,但它有很大的局限性,首先,由于JavaScript是支持自動化的底層技術,有些操作是不允許的,因為JavaScript不允許--例如,上傳和下載檔案或處理彈出式視窗和對話框,此外Selenium RC引入的開銷也影響性能,

與此同時,Simon Stewart在2007年創建了WebDriver專案,WebDriver和Selenium RC從功能的角度來看是相當的,也就是說,這兩個專案都允許程式員使用編程語言來模擬用戶,然而,WebDriver使用每個瀏覽器的原生支持來進行自動化,因此,其能力和性能遠遠優于RC,2009年,Jason Huggins和Simon Stewart在谷歌測驗自動化會議上會面后,他們決定將Selenium和WebDriver合并為一個專案,這個新專案被稱為Selenium WebDriver或Selenium 2,這個新專案使用基于HTTP的通信協議,結合瀏覽器上的本地自動化支持,這種方法仍然是Selenium 3(2016年發布)和Selenium 4(2021年發布)的基礎,現在我們把Selenium RC和Core稱為 "Selenium 1",而且不鼓勵使用它,而是使用Selenium WebDriver,

Selenium WebDriver

Selenium WebDriver是自動控制瀏覽器的庫,它提供了不同語言系結的跨平臺的API,Selenium WebDriver支持的官方編程語言有Python、Java、JavaScript、Ruby和C#,Selenium WebDriver使用每個瀏覽器實作的本地支持來執行自動化程序,我們需要在使用Selenium WebDriver API的腳本和瀏覽器之安裝驅動,
image

驅動程式(如chromedriver、geckodriver等)是依賴于平臺的二進制檔案,接收來自WebDriver腳本的命令,并將其翻譯成一些瀏覽器特定的語言,在Selenium WebDriver的第一個版本中(即在Selenium 2中),這些命令(也被稱為Selenium協議)是通過HTTP的JSON訊息(所謂的 JSON Wire Protocol),如今,這種通信(仍然是通過HTTP的JSON)遵循W3C WebDriver的標準規范,從Selenium 4開始,該規范是首選的Selenium協議,

Chrome瀏覽器遵循DevTools協議,DevTools是一套用于基于Blink渲染引擎的瀏覽器的開發者工具,如Chrome、Chromium、Edge或Opera,DevTools協議基于JSON-RPC訊息,可以對這些瀏覽器進行檢查、除錯和分析,在Firefox中,原生自動化支持使用Marionette協議,Marionette是基于JSON的遠程協議,允許檢測和控制基于Gecko引擎的網路瀏覽器(如Firefox),

Selenium WebDriver允許像用戶一樣控制網路瀏覽器,但要以編程方式進行,為此,Selenium WebDriver的API提供了各種各樣的功能,可以瀏覽網頁,與網頁元素互動,或者模擬用戶操作,以及其他許多功能,目標應用是基于網路的,如靜態網站、動態網路應用、單頁應用(SPA)、具有網路界面的復雜企業系統等,

Selenium Grid

Selenium家族的第二個專案是Selenium Grid,Philippe Hanrigou在2008年開始開發這個專案,Selenium Grid是一組聯網的主機,為Selenium WebDriver提供瀏覽器基礎設施,這個基礎結構使Selenium WebDriver腳本能夠在多個作業系統的不同性質(型別和版本)的遠程瀏覽器中(并行)執行,

image

網格的中心入口是Hub(也被稱為Selenium服務器),這個服務器端的組件保持對節點的跟蹤,并代理來自Selenium腳本的請求,和Selenium WebDriver一樣,W3C WebDriver規范是這些腳本和Hub之間通信的標準協議,Selenium 4提供了完全分布式的Selenium Grid,這種架構實作了先進的負載平衡機制,以避免任何組件過載,

Selenium IDE

Shinya Kasatani在2006年創建了這個專案,Selenium IDE是記錄和回放(R&P)自動化技術的工具,首先,在Selenium IDE中,記錄部分捕獲用戶與瀏覽器的互動,將這些動作編碼為Selenium命令,第二,我們使用生成的Selenium腳本來自動執行瀏覽器會話(回放),

這個早期版本的Selenium IDE是一個Firefox插件,嵌入了Selenium Core來記錄、編輯和播放Selenium腳本,這些早期版本是XPI模塊(即用于創建Mozilla擴展的技術),從55版(2017年發布)開始,火狐瀏覽器將對附加組件的支持遷移到了W3C瀏覽器擴展規范,因此,Selenium IDE被停用了,有一段時間無法使用它,Selenium團隊按照瀏覽器擴展的建議重寫了Selenium IDE,以解決這個問題,得益于此,我們現在可以在多個瀏覽器中使用Selenium IDE,如Chrome、Edge和Firefox,
image

使用這個GUI,用戶可以記錄與瀏覽器的互動,編輯和執行生成的腳本,Selenium IDE將每個互動編碼為不同的部分:命令(即在瀏覽器中執行的動作)、目標(即網路元素的定位器)和值(即處理的資料),當然,我們也可以包括對命令的描述,Selenium IDE基于Electron,Electron是基于Chromium和Node.js的開源框架,允許桌面應用開發,

image

Selenium 生態系統

  • API

Selenium專案為Selenium WebDriver維護著各種語言系結:
Python、Java、JavaScript、Ruby和C#,

  • 驅動

  • 定位器工具

Selenium WebDriver API提供了不同的方法來定位Web元素(見第三章):通過屬性(id、name或class),通過鏈接文本(完整或部分),通過標簽名稱,通過CSS(層疊樣式表)選擇器,或通過XML路徑語言(XPath),特定的工具可以幫助識別和生成這些定位器,
image

  • 框架

python中有不少庫對selenium進行了擴展,以下是一部分

https://github.com/mherrmann/selenium-python-helium
https://github.com/seleniumbase/SeleniumBase
https://github.com/cobrateam/splinter

  • 瀏覽器基礎設施

我們可以用Selenium WebDriver來控制安裝在運行WebDriver腳本的機器上的本地瀏覽器,同時,Selenium WebDriver可以驅動遠程網路瀏覽器(即在其他主機上執行的瀏覽器),在這種情況下,我們可以使用Selenium Grid來支持遠程瀏覽器的基礎設施,盡管如此,這種基礎設施在創建和維護方面可能具有挑戰性,

另外,我們也可以使用云提供商,將支持瀏覽器基礎設施的責任外包出去,在Selenium生態系統中,云提供商是為自動測驗提供管理服務的公司或產品,這些公司通常提供網路和移動測驗的商業解決方案,云提供商的用戶要求按需提供不同型別、版本和作業系統的瀏覽器,此外,這些供應商通常提供額外的服務,以緩解測驗和監測活動,如訪問會話記錄或分析能力,僅舉幾例,現在與Selenium最相關的一些云供應商是Sauce Labs、BrowserStack、LambdaTest、CrossBrowserTesting、Moon Cloud、TestingBot、Perfecto或Testinium,

另一個我們可以用來支持Selenium的瀏覽器基礎設施的解決方案是Docker,Docker是一種開源軟體技術,允許用戶將應用程式打包并作為輕量級、可移植的容器運行,Docker平臺有兩個主要組成部分:Docker引擎:用于創建和運行容器的工具,以及Docker Hub:用于分發Docker鏡像的云服務,在Selenium領域,我們可以使用Docker來打包和執行容器化瀏覽器,表1-6列出了在Selenium生態系統中使用Docker的相關專案的摘要,

image

  • 社區

由于其協作的性質,軟體開發需要許多參與者的組織和互動,在開放原始碼領域,我們可以通過社區的相關性來衡量一個專案的成功,Selenium得到了全世界許多不同參與者的大型社區的支持,

image

快速入門

from selenium import webdriver
from selenium.webdriver.common.by import By

# create webdriver object
driver = webdriver.Firefox()

driver.get("https://cn.bing.com")
driver.find_element(By.ID, "sb_form_q").send_keys("python selenium")
driver.find_element(By.CSS_SELECTOR, "#search_icon > svg").click()
釘釘或微信號: pythontesting 微信公眾號:pythontesting

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/550864.html

標籤:其他

上一篇:從功能到外企測開,作業1年半拿下年薪30萬的測開 offer,未來可期

下一篇:返回列表

標籤雲
其他(157861) Python(38092) JavaScript(25381) Java(17985) C(15215) 區塊鏈(8256) C#(7972) AI(7469) 爪哇(7425) MySQL(7137) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4557) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2430) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1959) Web開發(1951) HtmlCss(1919) python-3.x(1918) 弹簧靴(1913) C++(1910) xml(1889) PostgreSQL(1872) .NETCore(1854) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • selenium 4(python)快速入門-1 簡介

    Selenium歷史 Selenium為瀏覽器自動化提供了先進的功能,從業者通常用它來實作網路應用的端到端測驗。Selenium由三個核心組件組成: WebDriver, Grid, 和 IDE。 Jason Huggins和Paul Hammant于2004年在Thoughtworks作業時創建了 ......

    uj5u.com 2023-04-23 07:35:24 more
  • 從功能到外企測開,作業1年半拿下年薪30萬的測開 offer,未來可期

    說一下我的大致情況,女,2018年畢業于末流211計算機本科。后來待業兩年,完全沒有從事互聯網方面的作業。去年來到北京,在小公司做了一年多功能測驗。今年11月底跳槽到外企,開始了我錢多事少離家近,每周965的快樂生活,現在年薪30萬左右。 降大任于斯人也,必先苦其心志 2014年,高考沒有考好,為了 ......

    uj5u.com 2023-04-23 07:34:50 more
  • 常見的webshell連接工具流量

    中國菜刀 連接程序中使用base64編碼對發送的指令進行加密,其中兩個關鍵payload z1 和 z2,名字都是可變的。 然后還有一段以QG開頭,7J結尾的固定代碼。 蟻劍 默認的user-agent請求頭是antsword xxx,不過可以修改。 一般將payload進行分段,然后分別進行bas ......

    uj5u.com 2023-04-23 07:34:23 more
  • Vulnhub之Healthcare靶機詳細測驗程序

    Healthcare 作者: jason huawen 靶機資訊 名稱: 地址: 識別目標主機IP地址 ─(kali?kali)-[~/Vulnhub/Healthcare] └─$ sudo netdiscover -i eth1 -r 192.168.56.0/24 Currently scan ......

    uj5u.com 2023-04-23 07:34:19 more
  • Vulnhub之Hacker Fest 2019靶機詳細測驗程序

    HF 2019 作者:jason huawen 靶機資訊 名稱:Hacker Fest: 2019 地址: https://www.vulnhub.com/entry/hacker-fest-2019,378/ 識別目標主機IP地址 將虛擬機鏡像匯入到VirtualBox中,并設定網路模式為host ......

    uj5u.com 2023-04-23 07:34:14 more
  • toml格式組態檔介紹

    toml官方wik toml官方檔案 此次檔案是以v1.0.0為例,進行說明的。如果使用到的版本不同,直接去官方檔案中找對應的版本即可。 談到組態檔,大家都能說出來好幾種,比如常見的ini、xml、json、yaml、properties、toml等等,因為專案中用到了toml格式的組態檔,但是 ......

    uj5u.com 2023-04-22 07:45:22 more
  • 【ZeroMQ】zguide 第一章 部分翻譯

    為了更好的閱讀體驗,請點擊這里 本文大部分內容翻譯自 Chapter 1 - Basics,原因是之前翻譯的版本太老了,不得不親自披掛上陣~~拿機器翻譯一下~~。只截取了部分自己可能用得到的,所以如果有看不太懂的地方,去翻一下原網頁吧。QWQ 附贈 libzmq 的 api 介面函式說明 一份。 一 ......

    uj5u.com 2023-04-22 07:45:15 more
  • 更好地提問ChatGPT_常用prompt表

    類別目的提問方式要點 文案寫作 周報、日報、年終總結 本周我做了以下幾件事情:出差客戶辦事處、交流演示、初步資料分析。請幫我寫一份周報 要點形式列舉作業內容。可以說明職位,以便作業內容更貼合實際情況 郵件 我是某專案的專案經歷,請寫一份作業郵件,來詢問研發小組開發進度,同時邀請參加階段匯報會議 說明 ......

    uj5u.com 2023-04-22 07:45:08 more
  • 物聯網常見協議之Amqp協議及使用場景決議

    摘要:本文圍繞AMQP協議,為大家詳細決議AMQP協議、核心技術亮點、多協議之間的對比以及使用實踐。 本文分享自華為云社區《物聯網常見協議之Amqp協議及使用場景決議》,作者:張儉。 引言 本文圍繞AMQP協議,為大家詳細決議AMQP協議、核心技術亮點、多協議之間的對比以及使用實踐,并介紹華為云Io ......

    uj5u.com 2023-04-22 07:44:54 more
  • 10萬字干貨:《數字業務連續性提升最佳實踐》免費領取|TakinTalks社

    一分鐘精華速覽 首刊限版400本,沒有電子版下載。 100本作為社區福利,免費領取,領完即止!不加印。 為什么會有這本刊物? TakinTalks社區是由業內專家共同發起的、專注業務穩定性提升的技術交流平臺。面向技術管理者和一線從業者,定期探討行業前沿的技術,分享最新的、可參考的、可落地的實戰經驗。 ......

    uj5u.com 2023-04-22 07:44:13 more