WebDriver 是按照server – client 的經典設計模式設計的。
server 端就是remote server,能夠是任意的瀏覽器。當咱們的腳本啓動瀏覽器後,該瀏覽器就是remote
server,它的職責就是等待client 發送請求並作出相應。
client 端簡單說來就是咱們的測試代碼,咱們測試代碼中的一些行爲,好比打開瀏覽器,轉跳到特定
的url 等操做是以http 請求的方式發送給被測試瀏覽器,也就是remote server;remote server 接受請求,
並執行相應操做,並在response 中返回執行狀態、返回值等信息。
webdriver 的工做流程:
1. WebDriver 啓動目標瀏覽器,並綁定到指定端口。該啓動的瀏覽器實例,作爲WebDriver 的remote
server。
2. Client 端經過CommandExcuter 發送HTTPRequest 給remote server 的偵聽端口(通訊協議: the
webriver wire protocol)
3. Remote server 須要依賴原生的瀏覽器組件(如:IEDriverServer.exe、chromedriver.exe),來轉化轉
化瀏覽器的native 調用。
總結:
對於碰到的一些常見功能,如何經過技巧來定位它們,
可是在實際的自動化腳本開發中,不論是新手仍是具備必定經驗的老手,所遇到最多的問題仍然是元素的
定位。
有時元素定位很是簡單,例如,咱們只要知道這個元素有的id 和name 就能夠輕鬆的來定位到它;有
時元素的定位卻很是的使人頭疼,儘管咱們想盡了辦法,仍然沒法定位到它。在這裏筆者也沒萬能的方法
來幫你解決這些實際問題。
對於不一樣的web 項目,所用到的前端技術也不一樣,有些項目會用到EXT(一個強在的js 類庫),有
些會用到AJAX(一種建立交互式網頁應用的網頁開發技術),這些技術的應用無疑對於前端開發人員可
以快速的生成所須要的頁面,但對於UI 自動化測試人員來講,增長了定位頁面元素的難度。
因此,在進行項目實現UI 自動化評估的時候,頁面元素的定位難度也是一個評估標準,若是到處都
是很難定位的元素,那麼無疑會增長腳本的開發與維護的成本,得不償失。這個時候我能夠考慮將更新多
的精力放在單元或接口層的自動化上。
對於自動化測試人員來講,若是熟悉前端技術也會大大下降你定位元素的難度,熟練使用XPath 和
CSS 技術會使你的定位變得容易不少,若是精通javascript、jquery 等技術,那麼使你的定位之路變得更加
爲所欲爲。
在咱們嘗試開展自動化的web 項目中,大多數在設計初期並無考慮是否易於進行自動化,因此更多
的會以實現功能爲目的,這個也是後期開展自動化困難重重的重要緣由。若是開發人員在設計代碼的時候
就考慮是否容易自動化,爲必要的元素加上id 和name 屬性的話,那麼咱們自動化工做會變得容易不少。
測試人員如何更順利的實施自動化測試工做。一方面要努力學好技術,克服技術難題。另外一方面,我
們要清楚的認識到,自動化技術的應用與實踐不是一我的的戰鬥。必定要獲得整個團隊的配合與支持。
固然,站在公司的立場,不能帶來收益的事情是很可貴到支持的,這個就須要讀者去綜合評估目前的
產品真的是否適合引入自動化,或者目前的階段是否真的迫切須要開展自動化。
假如,你已經動手開始進行自動化了,筆者再提幾點建議。
一、熟練掌握xpath\CSS 定位的使用,這樣在遇到各類難以定位的屬性時纔不會變得一籌莫展。
二、準備一份selenium-2.5.0-java-api,及時查閱WebDriver 所提供的方法。
三、學習掌握JavaScript 語言,掌握JavaScript 好處前面已經有過闡述,可讓咱們的自動化測試工做
更加遊刃有餘。
四、自動化測試歸根結底是與前端打交道,多多熟悉前端技術javascript