Selenium 及其實(shí)現原理
Selenium 的主要功能包括:
1)測試與瀏覽器的兼容性:測試應用程序能否兼容工作在不同瀏覽器和操作系統之上。
2)測試系統功能:錄制用例自動(dòng)生成測試腳本,用于回歸功能測試或者系統用例說(shuō)明。
簡(jiǎn)而言之,Selenium 就是一款可以錄制用戶(hù)操作,幫助 Web 測試人員簡(jiǎn)化重復勞動(dòng)的工具。
目前為止 Selenium 有兩種版本:
Selenium 1(Selenium RC,Remote Control):傳統 Selenium 框架,支持多種編程語(yǔ)言腳本生成。但需要啟動(dòng)一個(gè)代理 Server 來(lái)處理用戶(hù)與測試 Server 之間的通訊。
Selenium 2(Selenium Webdriver):全新自動(dòng)化接口,突破了 Selenium 1 的一些限制,剔除了中間 Server,但由于寫(xiě)這篇文章為止自動(dòng)生成腳本工具對 Selenium 2 的支持還不好,適合熟悉 Selenium API 的手寫(xiě) case 測試人員使用。
閱讀本文讀者可以學(xué)習到以下技能:
了解 Selenium 自動(dòng)化測試框架的基本概念。
學(xué)會(huì )搭建應用 Selenium 自動(dòng)化測試框架的環(huán)境。
搭建一個(gè)自集成的測試容器以持續測試 Selenium 測試用例。
本文著(zhù)重介紹傳統 Selenium 1 的原理及使用方法。接下來(lái)讓我們看看 Selenium 是如何調用錄制腳本并實(shí)現自動(dòng)測試的。
Selenium 1 實(shí)現原理
Selenium 引入了 Remote Control Server 這樣一個(gè)代理 Server,JavaScript 腳本注入和與 Server 通訊都通過(guò)這個(gè)代理 Server 來(lái)進(jìn)行。如下圖所示:
圖 1. Remote Control 模式運行流程
之所以引入這個(gè)代理 Remote Control Server 是因為“同源策略”的限制,通過(guò)這個(gè)代理服務(wù)器來(lái)“欺騙”遠程 Server,達到使其以為是從同一個(gè)地方 load 代碼以正確返回請求數據的效果。
流程說(shuō)明:
客戶(hù)端建立與 selenium-RC server 的連接。
Selenium RC Server 啟動(dòng)一個(gè)瀏覽器(或是已經(jīng)使用中),并注入 JS 代碼
將 Selenese 代碼傳到客戶(hù)端的 Selenium-Core 中。
Selenium-Core 翻譯并解析執行用戶(hù)錄制的操作。
原文轉自:http://www.uml.org.cn/Test/201707182.asp