1.Selenium簡介及組成javascript
selenium是一種web自動化測試工具,它能夠在主流的瀏覽器上運行,支持的語言有java, python,javascripthtml
selenium主要有三部分組成:java
Selenium IDE:錄製和回放腳本,能夠模擬用戶對頁面的真實操做,區別於其餘工具:是經過攔截http請求。python
通常只把錄製腳本看成一個輔助功能,由於一個UI節點的細微變化,均可能致使自動化測試工具沒法識別,當測試項目項目大時,定位、更新十分困難。web
其次,錄製的腳本有時候人工難以理解。面試
Selenium Grid:實如今多臺機器上、和異構環境中並行執行測試用例。並行執行不只節省時間,並且能夠同時在不一樣的瀏覽器、平臺上運行自動化測試腳本。chrome
Selenium Web Driver:針對各個瀏覽器而開發,經過原生瀏覽器支持或者擴展(Chrome webDrive、FireFox WebDriver)直接控制瀏覽器api
Selenium RC(Selenium1.0):在瀏覽器中運行javaScript,使用瀏覽器內置的JavaScript來翻譯和執行selense瀏覽器
2.Selenium特色安全
支持錄製和回放(Selenium IDE)
經過WebDriver,直接控制瀏覽器,而不是經過攔截HTTP請求,實現真正模仿了用戶的操做;同時使用WebDriver可以靈活的獲取頁面元素(WebDriver),而且提供執行JS的接口
可以分佈式運行在不一樣機器和異構環境中(不一樣瀏覽器)
3. Selenium的內部運行機制?如何可以跨瀏覽器使用?——WebDriver原理(&RC原理)
1)RC原理
在Selenium1.0中,是經過Selenium RC服務器做爲代理服務器去訪問應用從而達到測試的目的。
Selenium RC分爲三個部分,Launcher、HttpProxy、Core。
Launcher用於啓動瀏覽器,把Selenium Core加載到瀏覽器中,而且把瀏覽器的代理設置爲Selenium Server的Http Proxy。
Core是一堆JavaScript的集合,因此本質至關於運行這些JavaScript函數來實現對Html頁面的操做。——這也是爲何能夠運行在幾乎全部主流的瀏覽器上。
然而直接運行JavaScript會有極大的安全漏洞,因此會受到「同源限制」,在這個基礎上,Selenium2.0引入了WebDriver。
2)Web Driver原理
webDriver是按照client/server模式設計的。client是咱們的測試腳本,發送請求;server就是打開的瀏覽器,用來接收client的請求並做出響應。
具體的工做流程:
webDriver打開瀏覽器並綁定到指定端口。啓動的瀏覽器做爲遠程服務器remote server
client經過CommandExecuter發送http請求給遠程服務器的偵聽端口(the wire protocal)
遠程服務器根據原生的瀏覽器組件來轉化爲瀏覽器的本地(native)調用
因此web Driver用到的協議:
打開瀏覽器時:HTTP協議
client端發送http請求到遠程服務器的偵聽端口:the wire protocol
其中:
有線協議:指的是從點到點獲取數據的方式,是應用層的協議。
HTTP協議:是用於從服務器傳輸超文本標記語言HTML到客戶端的通訊協議。是一個應用層協議,由請求/響應構成,是一個標準的客戶/服務器模式。是一個無狀態的協議。
(無狀態:對事務沒有記憶能力,不會保存此次傳輸的信息——節約內存)
1.安裝java運行環境
2.下載selenium IDE : https://www.seleniumhq.org/download/
下載chromedriver.exe : http://selenium-release.storage.googleapis.com/index.html
3.新建一個java項目,在其下面建立一個libs的文件夾,將selenium-java.zip中的jar包都拷貝進去
4.鼠標右擊java項目->Build Path -> Config build path -> java build Path -> Libraries -> Add JARs
以下所示,添加jar包成功
6.編寫代碼啓動Chrome瀏覽器
package com.java.sele; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.firefox.FirefoxDriver; public class Test { public static void main(String[] args) { WebDriver driver; //設置瀏覽器驅動環境變量 System.setProperty("webdriver.chrome.driver", "C:\\Program Files (x86)\\ChromeCore\\chromedriver.exe"); driver = new ChromeDriver(); driver.get("http://www.baidu.com"); } }
注意:
chromedriver.exe與Chrome瀏覽器的版本要對應,不然代碼會報錯
參考資料:《基於Selenium 2的自動化測試》