瀏覽器自動化操作標準--WebDriver

WebDriver是一個瀏覽器遠程控制協議,是一個既定標準,它本身的內容非常豐富,本文不可能全部介紹,本文僅粗略帶大家了解一下WebDriver的部分內容以及一個小的實際應用。想深入了解的請參考W3C文檔WebDriver.

問題背景

開發的同學都知道公司為了便于開發和測試都會有多套環境,比如dev開發環境、qa測試聯調環境、pre預發模擬線上環境、online線上環境。經常切環境也是一個比較繁瑣的事情,簡單來說,作為一個前端開發,頻率最高的操作路徑是:

1.通過SwitchHosts切換host

clipboard.png

2.選擇目錄和網關(由于環境不夠用,但是又需要部署多套代碼。為了解決這個問題,我們利用nginx來在一臺機器上配置多個目錄,每個目錄對應不同的代碼,當你訪問這個頁面的時候,網關會記住你所選擇的目錄,進而對你的請求進行相應的轉發)

clipboard.png

3.登錄網頁進行ui調試和接口聯調

SwitchHosts切換host還算方便,但是選擇目錄、選擇網關、打開網頁輸入用戶名密碼然后點登錄,這個過程操作頻率比較高,有點繁瑣。能不能自動化這個過程呢?熟悉自動化測試的同學對這個就非常了解了,端到端測試就是利用自動化測試套件模擬用戶訪問網頁的過程。這里我采用selenium-webdriver這個庫,通過node來執行自動化腳本,代碼如下。
圖片描述

那么selenium-webdriver到底是如何與瀏覽器進行交互的?如何與不同的瀏覽器進行交互呢?

下面就要引入主角了—— WebDriver, WebDriver是W3C的一個標準,它是一個標準,所以不同的瀏覽器都會有自己的實現,而selenium-webdriver是通過WebDriver協議與瀏覽器進行交互的。

WebDriver是什么

WebDriver是W3C的一個標準,是一個遠程控制協議,它提供了跨平臺和跨語言的方式來遠程操控瀏覽器,它提供了一系列接口來訪問和操作DOM,進而控制瀏覽器的行為。它使得web開發者能寫一些自動化腳本來測試網頁。

WebDriver的工作過程

(主要參考:https://blog.csdn.net/ant_ren...)
瀏覽器在啟動后會在某一個端口啟動基于WebDriver協議的Web Service,接下來我們調用WebDriver的任何api時,都需要借助一個ComandExecutor發送一個命令(也就是給監聽端口上的Web Service發送一個http請求),這個命令會告訴瀏覽器接下來要做什么。

clipboard.png

WebDriver的實際應用

selenium-webdriver

這是一個瀏覽器自動化庫,它提供了許多瀏覽器自動化接口,用于測試web應用。
除了通過npm安裝selenium-webdriver之外,還需要安裝瀏覽器相應的驅動。
它相應的api和用法selenium-webdriver

在我們new一個WebDriver的過程中,selenium首先會確認瀏覽器的native component是否存在可用而且匹配的版本,然后就在目標瀏覽器里啟動一整套Web Service,這套Web Service使用了selenium自己設計定義的協議,名字叫做The WebDriver Wire Protocol。這套協議非常之強大,幾乎可以操作瀏覽器做任何事情,包括打開、關閉、最大化、最小化、元素定位、元素點擊、上傳文件等等。

參考資料

https://www.cnblogs.com/linbo...
https://cloud.tencent.com/dev...
http://www.cnblogs.com/sunada...

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

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

相關文章

versa max_如何從Mac(和Vice Versa)打開或關閉iPhone的Safari選項卡

versa maxMany of us are familiar with this scenario: you’re looking something up on our iPhone, find exactly what we’re looking for, but then have to put our phone away to attend to something else. Later, while working on your Mac, you want to continue w…

【nuxtjs 指南】解決nuxtjs本地開發跨域和防止路由與api沖突問題

目前vue很火,大部分開發者把vue當做框架首選,然而spa是對搜素引擎很不友好,就會想到ssr,在vue社區nuxtjs完美的解決了這個問題,目前nuxt還不算太成熟,當然對于新手坑比較多,當我們確定使用了這個…

WPF效果第二百零五篇之自定義導航控件

前面摸索了一下會簡單玩耍自定義控件了;今天再次分享一下N年前想要在GIS實現的一個導航控件;來看看最終實現的效果:1、先來看看前臺xaml布局:2、后臺路由事件就參照上一篇快捷方式3、關鍵依賴屬性的回調觸發路由事件:4、內部Arc的MouseDown事件觸發路由事件:private void Arc_M…

python3用list實現棧

工作中遇到的需求,****代表標簽數據別的信息: D01  ********  1  ******** D01  ********  2  ******** D01  ********  3  ******** D01  ********  4  ******** D02  ********  1  ******** D02  ********  2  **…

powershell 腳本運行策略,參數....

1.運行策略 Powershell一般初始化情況下都會禁止腳本執行。腳本能否執行取決于Powershell的執行策略。 PS E:> Get-ExecutionPolicy Restricted PS E:> Set-ExecutionPolicy UnRestricted 2.直接運行 PS E:> "Hello,Powershell Script" > MyScript.ps…

linux每日命令(5):mkdir命令

閱讀目錄(Content)1.命令格式:2.命令功能:3.命令參數:4.命令實例:1:創建一個空目錄2:遞歸創建多個目錄3:創建權限為777的目錄4:創建新…

mac命令行將輸出寫入文件_如何在Linux中使用命令行將PDF文件轉換為可編輯文本...

mac命令行將輸出寫入文件There are various reasons why you might want to convert a PDF file to editable text. Maybe you need to revise an old document and all you have is the PDF version of it. Converting PDF files in Windows is easy, but what if you’re usi…

Windows Socket和Linux Socket編程的區別

2019獨角獸企業重金招聘Python工程師標準>>> 1、一些常用函數的移植 http://www.vckbase.com/document/viewdoc/?id1586 2、網絡 socket相關程序從Windows移植到Linux下需要注意的: 1)頭文件 Windows下winsock.h/winsock2.h Linux下sys/socket.h 錯誤處理&…

使用 C# 開發的現代輕量級 Windows 文本編輯器

你好,這里是 Dotnet 工具箱,定期分享 Dotnet 有趣,實用的工具和組件,希望對您有用!Notepads 是一個具有簡約設計的現代化輕量級文本編輯器,在 github 上開源,由微軟大佬 Jiaqi Liu 開發。開發背…

分布式壓測系列之Jmeter4.0第一季

1)Jmeter4.0介紹 jmeter是個純java編寫的開源壓測工具,apache旗下的開源軟件,一開始是設計為web測試的軟件,由于發展迅猛,現在可以壓測許多協議比如:http、https、soap、ftp、database數據庫、LDAP 輕量目…

powershell 查看系統設備\device status

查看設備 $allDevice"C:\Data\soundDevAll.txt" (Get-WmiObject -Class Win32_SoundDevice).Name|Out-File $allDevice device status $deviceInfoGet-WmiObject Win32_PnPEntity| select Name, Status | where {$_.Name -like "$deviceName"} $set…

Fish Shell 使用筆記

安裝Fish Shell brew install fish 安裝Oh My Fish curl -L https://get.oh-my.fish | fish 安裝Fisher curl https://git.io/fisher --create-dirs -sLo ~/.config/fish/functions/fisher.fish 配置 autojump clone autojump git clone https://github.com/wting/autojum…

Entity Framework Core 7中高效地進行批量數據插入

因為之前的版本中,EF Core無法實現高效地批量插入、修改、刪除數據,所以我開發了Zack.EFCore.Batch這個開源項目,比較受大家的歡迎,獲得了400多個star。從.NET 7開始,微軟在Entity Framework Core 7內置了對高效地批量…

Hive學習之路 (一)Hive初識

Hive 簡介 什么是Hive 1、Hive 由 Facebook 實現并開源 2、是基于 Hadoop 的一個數據倉庫工具 3、可以將結構化的數據映射為一張數據庫表 4、并提供 HQL(Hive SQL)查詢功能 5、底層數據是存儲在 HDFS 上 6、Hive的本質是將 SQL 語句轉換為 MapReduce 任務運行 7、使不熟悉 MapR…

angularJs select綁定的model 取不到值

內容結構 一.原因分析 二. 解決辦法 一.原因分析 1.由于原型繼承的關系,修改父級對象中的someBareValue會同時修改子對象中的值,但反之則不行。2.ng-if 以及 ng-repeat 會創建一個子級作用域,如果在這倆個指令中添加了元素&a…

PS2019攝影后期處理(三)通透....

一、PS可選顏色 在對應顏色進行cmyk加減

(原創) 今天拿到學生證了 (日記)

<原文我在2006/09/07發表在藍色小舖>今天拿到學生證了&#xff0c;終於正式成為臺大的學生。第一件事情就是去臺大圖書館借了四本書回家看&#xff0c;一次可以借兩個月耶&#xff0c;真不錯。 感覺很複雜&#xff0c;下星期要離開華碩&#xff0c;得繳回識別證&#xff…

os 鍵盤快捷鍵截圖_如何通過鍵盤快捷鍵更有效地使用OS X虛擬桌面

os 鍵盤快捷鍵截圖() We like having multiple virtual desktops on OS X, especially when we can supercharge them by combining them with a few simple keyboard shortcuts. So, on that note, here are some practical ways to use OS X’s virtual desktops like you me…

旗正規則引擎內存表出錯的原因及解決方法

經常我們有一些使用者問到這個問題&#xff0c;關于內存表出錯的情況&#xff0c;其實問題不復雜&#xff0c;我這給大家簡單的講一下就明白了&#xff0c;如果還有什么不明白的&#xff0c;其實也都可以問廠家杭州旗正&#xff0c;隨時都有人回應的。 1 內存表 1.1 匯總 1.1.1…

Shell腳本之sed的使用

1.sed命令&#xff1b;主要作用是查找&#xff1b;新增 刪除 和修改替換。 user.txt daokr#cat user.txt ID Name Sex Age 1 zhang M 19 2 wang G 20 3 cheng M 10 4 huahua M 100 查找命令&#xff1a;-n 和 p&#xff08;prin…