實踐selenium自動化時先要弄清的幾件事

最近在招聘,很多同學的簡歷都有自動化測試,基本都有selenium。但很少有人真正弄清selenium。一個是selenium的提供了很多組件,讓人容易上手,然后很多人就沒有然后了。二是selenium的更新伴隨著工具的合并,很多人壓根沒高清自己用的是selenium RC 還是 webdriver。根據(jù)最近面試的情況,把很多同學在實踐selenium的時候沒弄清的問題總結(jié)了一下。詳述如下:


1 selenium 工具組件

1.1 selenium2,也稱為selenium webdriver。webdriver原來是另一個自動化測試工具,后與selenium 合并了。webdriver直接調(diào)用瀏覽器本身對自動化支持的接口來驅(qū)動瀏覽器的操作。故名思義,它將有不同的driver來驅(qū)動不同系統(tǒng)上不同的瀏覽器。

1.2 selenium1,也稱為seleniumRC或者Remote Control。就是selenium的原本項目。RC是在瀏覽器啟動后,使用js來驅(qū)動瀏覽器的操作。為什么叫RC呢?因為RC的設(shè)計是可以支持控制遠程服務(wù)器上的selenium server來操作遠程端的瀏覽器。

1.3 seleniumIDE,這個是大家都明確的,以插件的形式安裝在firefox,用于錄制。

1.4 selenium-grid,這個是對使用RC進行測試時,需要執(zhí)行大量用例或分布式執(zhí)行的時候,提供的框架,就是建立多個服務(wù)器的hub與node的關(guān)系而已。

簡單說,selenium項目原本的工具是IDE、RC、grid。而webdriver確實功能強大,“他們”討論討論,就把它被并入selenium了。


2 工具包

目前selenium的包已升級到3.x,大概是16年下半年。常用的包如下:

2.1 Selenium Standalone Server 作為遠程的服務(wù),運行RC和webdriver。從3.x版本開始,RC不能直接運行,需要通過WebDriverBackedSelenium的接口。

2.2 selenium client & webdriver :編寫RC、webdriver代碼需要的包。主要支持:java、c#、ruby、python、js。

2.3 google chrome driver:支持google chrome的driver。有win、mac、linux版本。

2.4 htmlUnitDriver:不使用具體的瀏覽器,而是在內(nèi)存中運行。

2.5 Mozilla GeckoDriver:支持火狐瀏覽器的driver。有win、mac、linux版本

更多的包參考:http://www.seleniumhq.org/download/


3 選用工具

了解階段:IDE+firefox

入門階段:RC、webDriver+firefox

深入階段: webdriver+testNG+google chrome driver+一門編程語言

瀏覽器選用google chrome 主要是經(jīng)驗主觀覺得selenium對firefox新版本的支持一直比較慢。而google chrome的較穩(wěn)定。


4 mac系統(tǒng)下google chrome瀏覽器的路徑配置

win系統(tǒng)的資料比較多,主要說下mac系統(tǒng)的問題。

在創(chuàng)建driver時,找不到瀏覽器路徑,通常使用設(shè)定系統(tǒng)屬性來實現(xiàn)。

而在mac系統(tǒng)下,使用google chrome瀏覽器或firefox時,先下載對應(yīng)的 driver。在代碼中配置driver的地址,再創(chuàng)建driver,例如 :

System.setProperty("webdriver.chrome.driver","/Users/yp-tc-m-2933/Desktop/selejar/chromedriver");

WebDriverdriver=newChromeDriver();

親測:firefox 51.0.1 (64 位),mac 10.10.5。創(chuàng)建firefox driver后直接崩潰。


5 元素定位與可測性

selenium提供了很豐富的元素定位工具。但總是會有找不到或者變更頻繁的,導致元素定位失敗。實際上,作為測試方,在系統(tǒng)設(shè)計時,就應(yīng)該提出對頁面測試的需求,在頁面設(shè)計時,在頁面元素中埋入測試屬性值。這就降低了頁面自動化的難度,不用把時間花在復雜的定位元素的過程中,并且最重要的是避免一旦頁面修改,帶來的腳本維護工作。這就提高了系統(tǒng)可測性。


6 后續(xù)

隨著對測試開發(fā)的逐漸流行,測試人員的代碼能力也在提升。在selenium的學習中,更需要掌握webdriver的api,探索selenium的更多特性。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容