Selenium實戰——.Net下的自動化測試搭建


這篇文章,其實我醞釀了好一陣子。作為一個開發人員,搞這個事情總歸有點狗拿耗子的感覺。各位看官手下留情,西紅柿和雞蛋留着回去炒個菜別朝我來。博客我不常寫,至於文筆……大家忍忍就過去了。

話說Selenium這東西出來很長時間了,我開始接觸的時候已經是2.0發布以后的事情了。縱觀國內,Selenium及其相關資料大多在Java領域有所耳聞,至於.Net的資料,國內大體是很少的。作為堅定的.Net陣營程序員,我覺得這是無法忍受的。

image

一切的一切之前,先看看Selenium的體系結構:

  • Selenium IDE ——錄制腳本神器,雖然有時候會有點犯二,但是對於初學者用來快速上手不失為快捷簡便的方法。
  • WebDriver ——腳本解析執行者,無論錄制還是自己編寫測試腳本,你都離不開它來執行。
  • Grid ——神級工具(對於高級應用來說它和宅男的快播一樣重要AV5W2LR]H5YAQXT}1N2LPDY,我這種小純潔是不可能用過快播的各位你們要相信我),主要是分布式執行腳本,當然,還可以借助它發揮其他作用,今后的文章肯定會提及它。

 

那么,了解完這就正式開始了,這里我先給大家講講 .Net平台下Selenium 環境的搭建。

首先,你要有一個內褲(呃……),如圖所示,最簡單的類庫。其下的3rdParty是所有需要的第三方組件

image

接下來,我們用Selenium IDE錄制一個百度搜索的腳本(敢問度娘除了測試網速還有什么用?)

錄制過程我就不贅述了,網上一搜一大把。但是唯一需要注意的是我們要將輸出格式調整為C#

image

錄制的操作步驟為:

1、打開百度

2、在關鍵字欄目輸入“暴走漫畫”

自動得到以下代碼(僅貼出關鍵的,保護滾輪人人有責)

這里和大家一起分析一下代碼的功能

image

SetUp特性是NUnit中提供的,表示這一部分是初始化工作

  1. 初始化了一個WebDriver提供的火狐驅動器(FirefoxDriver),執行腳本全靠它了。當然這里可以有更多的選擇,例如IE、谷歌瀏覽器,甚至安卓等瀏覽器。不過根據經驗,火狐17的ESR版本更加穩定。
  2. 將根URL設置為度娘
  3. 將一個用於錯誤記錄的S—B(你敢說你沒用這個名字命名過這種變量?)

 

image

Test特性表示這一部分是測試代碼主體,可以看到都是基於驅動器的實例在操作瀏覽器進行點擊和輸入

  1. 導航到百度
  2. 找到id為kw的元素,並且清空它
  3. 找到id為kw的元素,並且鍵入“暴走漫畫”
  4. 找到id為su的元素,並且點擊它

這和我們錄制的操作基本一致

image

TearDown,眼淚落下,你說測試結束的時候有特么這么煽情么?

  1. 試圖關閉瀏覽器,如果出錯也不屌它,這里至今我也沒搞清楚為什么不做處理,希望神人解答。
  2. 然后看看上面創建的記錄錯誤的S—B有沒有內容,如果有內容則測試失敗。

運行我們可以發現回放正常,重復執行了我們所錄制的操作。至此,最基本的測試框架就搭建完成。

其實一路下來我們發現其實很簡單的,博主的智商也不過如此,這還需要寫個什么鳥博客來JJYY一大串?

 

這個工程還只能供剛剛入門的測試人員參考,在這個工程中,我們其實從表面上就可以發現很多的問題:

  1. 代碼過於專業化,不自然,可讀性不高
  2. 錄制的腳本太過於機械化,例如Test中的第二句,其實在我們這次情況下是可有可無的。
  3. 重復代碼過多,不光是找元素的代碼driver.FindElement(By.Id("XX")),還有一些我沒有列出來的自動生成的IsElementPresent、CloseAlertAndGetItsText,不得不說這些方法是很有用的,但是如果你再錄制一個自動生成的腳本,這些方法又會出現,並且完全相同。在程序設計中,這些方法在維護的時候會非常令人頭疼,尤其是多起來了以后。

上面這些都是需要解決的問題,真正的項目中的代碼如果寫成這樣會被接你的班的程序員噴死的。那么,在下一次博客中,我們再來一起探討相關問題,接下來是觀眾提問時間謝謝~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM