Selenium Web Driver自動化測試(java版)系列下半部分(30) - 用數據驅動搭建測試框架雛形(3) - 添加用戶模塊用例

上篇我們添加了登錄失敗的test case昼捍,完成了整個登錄模塊翠肘。這篇我們繼續(xù)寫下一個模塊 - 用戶模塊眯亦。當你用一組員工代號/密碼登錄成功示例網站后點擊導航欄Employee伤溉,出現的是所有員工的基本信息:

注意第三列是Last Login Date,指的是最后一次登錄日期搔驼。你每次只要用一組員工代號/密碼登錄成功谈火,系統(tǒng)就會返回該員工最新登錄的日期。從上圖中可以看出來舌涨,每個員工最后登錄日期都是2018年5月31日糯耍。我這里設計了一個測試用例,驗證的是最后登錄日期是否和你電腦屏幕右下角的系統(tǒng)時間一致囊嘉。

1. 登錄http://www.cslm-test.com/hrsystem/index.php
2. 輸入員工代號和密碼温技;
3. 點擊登錄按鈕;
4. 點擊Employee扭粱;
5. 驗證登錄員工的最后登錄日期是否和系統(tǒng)時間一致

這里請注意一下舵鳞,由于頁面上顯示的是網站服務器的日期,不是真正你屏幕右下角的系統(tǒng)日期琢蛤,但世界各地又差不過24小時蜓堕,所以我們只要確保頁面日期在系統(tǒng)日期前一天到后一天之間即可。比如我現在電腦上的系統(tǒng)日期是2018-06-01博其,那我們放寬一下要求套才,只要頁面日期是2018-05-31、2018-06-01慕淡、2018-06-02之中的任意一天就行了背伴。

首先還是先定位頁面上的元素然后放進object repository中,我整理了一下峰髓,其實就兩個傻寂,一個是導航欄上的Employee,還一個是日期携兵。在com.testalliance.hrsystem.objrepository中新建empPage.properties:

日期的xpath里面員工代號的位置是“||EMPCODE||”疾掰,我們有三個員工,所以這地方不能寫死徐紧,“||EMPCODE||”指的是這個位置未來是要被剛剛登錄的員工代號替換的个绍。

下一步就該寫包括所有操作和斷言的page object的類了勒葱。寫登錄操作時起的名字是LoginPage.java,那我就叫用戶模塊EmpPage.java吧巴柿。在com.testalliance.hrsystem.pageobj中新建EmpPage.java:

測試用例中的前三步都沿用LoginPage.java里的操作方法凛虽,不說了,我們只需要把第4步和第5步寫到EmpPage.java中广恢。完整代碼如下:

首先還是在第25行讀取page objects凯旋。接下來點擊Employee的操作是navToEmployee()方法,在第43行钉迷。驗證日期的操作是第50行的verifyLoginDate()方法至非,那問題來了,怎樣比較兩個日期是否相等呢糠聪?網站頁面上的日期本質上其實就是個字符串荒椭,而你屏幕右下角的系統(tǒng)日期是日期格式的,格式都不一樣你怎么比較這兩者呢舰蟆?

這就需要日期和字符串之間進行轉換了趣惠。我的想法是把屏幕右下角系統(tǒng)日期轉換成字符串,然后和頁面上的比較身害。頁面日期字符串很容易取出味悄,定位后用getText()方法就可以了,這步操作在第74行到第77行之間塌鸯。之前說需要把"||EMPCODE||"這個字符串替換成登錄員工的員工代號侍瑟,也是在這里完成,這就是為什么verifyLoginDate()方法需要傳入一個員工代號的參數丙猬。

接下來我就要把系統(tǒng)日期轉成字符串了涨颜。java文檔中有個類叫Date,主要負責日期之類的處理:

這里有關于日期和時間的所有操作茧球,大家有機會可以多看一看庭瑰。回來看程序袜腥,第53行是實例化一個Date對象的過程见擦,得到的就是今天日期的對象钉汗,我給它起名為today羹令。其實僅僅做這一步我已經取到了系統(tǒng)日期,但這個today是Date類型的损痰,我要把它轉成字符串福侈,這就需要借助另一個叫SimpleDateFormat的類:

看第54行和55行我是怎么用它的,先實例化對象再調用format方法卢未。實例化對象時需要一個日期格式肪凛,它指的是日期轉換后的字符串格式堰汉。因為頁面上的日期字符串格式是"yyyy-MM-dd":

我只有把今天日期的對象today轉成相同格式的字符串才可以進行比較,否則沒可比性伟墙。所以翘鸭,我把參數也寫成"yyyy-MM-dd"。當然戳葵,這只是我們例子中的需要就乓,SimpleDateFormat還可以接受其它的日期格式,比如"yyyy-MM-dd hh:mm:ss"拱烁,精確到秒生蚁。總之戏自,你希望目標字符串是什么日期格式邦投,你的參數就寫成什么格式。第55行是轉換過程擅笔,用SimpleDateFormat的對象df調用format()方法志衣,里面?zhèn)魅雝oday對象,返回的就是今天日期的字符串剂娄。

這還沒完蠢涝,剛才說了,由于頁面上顯示的是網站服務器的日期阅懦,不是真正你屏幕右下角的系統(tǒng)日期和二,但世界各地又差不過24小時,所以我們只要確保頁面日期在系統(tǒng)日期前一天到后一天之間即可耳胎,我們還需要拿到昨天和明天的日期字符串惯吕。改變日期還需要一個類,叫Calendar怕午,日歷類:

通過這個類改變日期的具體做法是通過把日期放到日歷中再執(zhí)行加減得到以給定日期為基準的前后日期废登。不明白沒關系,一行一行解釋郁惜。程序中第58行到65行是取得昨天日期的方法堡距。還是要先取得Calendar對象,做法不是new一個兆蕉,而是是通過Calendar調用靜態(tài)方法getInstance()獲取的羽戒,之前介紹靜態(tài)方法時說過,它們可以通過類名來調用虎韵。通過Calendar對象c調用setTime()方法就是把日期放入日歷的過程易稠,它接受一個Date類型的日期參數,我把today傳進去包蓝,把今天放進了日歷驶社。然后日歷對象c調用add方法可以在剛才的日期參數也就是today的基礎上進行加減得到之前或之后的日期企量,“-1”表示前一天,也就是昨天。完成這步之后日歷上的日期也就變成了昨天,調用getTime()方法從日歷中再把日期取出來峦朗,因為是Date類型,所以我還要轉成字符串類型姆泻,和之前的一樣。同理冒嫡,我們還可以獲取明天的字符串形式拇勃,在第68到72行。當我們同時取得了昨天孝凌、今天和明天后方咆,就可以進行比較了。只要頁面上的日期和其中一個相等蟀架,我們就可以說測試通過了瓣赂。步驟在79到84行。

操作方法寫完了就該設計數據源文件了片拍。之前登錄模塊的四個數據源文件都放在了files里煌集,因為只有一個模塊。現在我們新增了員工模塊捌省,最好把它們分開苫纤,把files改成testdata.login,再新建testdata.employee -> TCEmp1.xlsx:

該改寫測試用例了纲缓。和剛才的道理一樣卷拘,之前登錄模塊的四個測試用例都放在了com.testalliance.hrsystem.tests里,因為只有一個模塊∽8撸現在我們新增了員工模塊栗弟,需要給它們分開,登錄模塊放在com.testalliance.hrsystem.tests.login中工闺,員工模塊放在com.testalliance.hrsystem.tests.emp中乍赫。新建com.testalliance.hrsystem.tests.emp -> TCEmp1.java:

添加如下代碼:

注意,因為我們修改了文件夾的名字陆蟆,文件的路徑也就改變了雷厂。提醒一下,登錄模塊的四個用例也需要修改文件路徑遍搞,我就不貼截圖了罗侯。畫紅框的位置就是第四步和第五步的步驟器腋,我們需要先得到page objects溪猿,然后再調用verifyLoginDate()方法钩杰。

最后,我們在TestRunner.java中添加TCEmp1的實例化以及調用test()方法的過程:

執(zhí)行一下诊县,測試通過:

這就是一個關于員工模塊用例的演示讲弄,現在TestRunner.java已經越來越長了,如果有很多test case你就得實例化每一個+調用test()方法依痊,很不方便維護避除。下一篇我們就來解決這個問題。

這篇文章的源代碼在SeleniumExcelDataDrivenFrame3項目里邊胸嘁。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末瓶摆,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子性宏,更是在濱河造成了極大的恐慌群井,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,185評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件毫胜,死亡現場離奇詭異书斜,居然都是意外死亡,警方通過查閱死者的電腦和手機酵使,發(fā)現死者居然都...
    沈念sama閱讀 90,445評論 3 385
  • 文/潘曉璐 我一進店門荐吉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人口渔,你說我怎么就攤上這事样屠。” “怎么了缺脉?”我有些...
    開封第一講書人閱讀 157,684評論 0 348
  • 文/不壞的土叔 我叫張陵瞧哟,是天一觀的道長。 經常有香客問我枪向,道長勤揩,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,564評論 1 284
  • 正文 為了忘掉前任秘蛔,我火速辦了婚禮陨亡,結果婚禮上,老公的妹妹穿的比我還像新娘深员。我一直安慰自己负蠕,他們只是感情好,可當我...
    茶點故事閱讀 65,681評論 6 386
  • 文/花漫 我一把揭開白布倦畅。 她就那樣靜靜地躺著遮糖,像睡著了一般。 火紅的嫁衣襯著肌膚如雪叠赐。 梳的紋絲不亂的頭發(fā)上欲账,一...
    開封第一講書人閱讀 49,874評論 1 290
  • 那天屡江,我揣著相機與錄音,去河邊找鬼赛不。 笑死惩嘉,一個胖子當著我的面吹牛,可吹牛的內容都是我干的踢故。 我是一名探鬼主播文黎,決...
    沈念sama閱讀 39,025評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼殿较!你這毒婦竟也來了耸峭?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,761評論 0 268
  • 序言:老撾萬榮一對情侶失蹤淋纲,失蹤者是張志新(化名)和其女友劉穎抓艳,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體帚戳,經...
    沈念sama閱讀 44,217評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡玷或,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,545評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了片任。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片偏友。...
    茶點故事閱讀 38,694評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖对供,靈堂內的尸體忽然破棺而出位他,到底是詐尸還是另有隱情,我是刑警寧澤产场,帶...
    沈念sama閱讀 34,351評論 4 332
  • 正文 年R本政府宣布鹅髓,位于F島的核電站,受9級特大地震影響京景,放射性物質發(fā)生泄漏窿冯。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,988評論 3 315
  • 文/蒙蒙 一确徙、第九天 我趴在偏房一處隱蔽的房頂上張望醒串。 院中可真熱鬧,春花似錦鄙皇、人聲如沸芜赌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,778評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽缠沈。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間洲愤,已是汗流浹背颓芭。 一陣腳步聲響...
    開封第一講書人閱讀 32,007評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留禽篱,地道東北人。 一個月前我還...
    沈念sama閱讀 46,427評論 2 360
  • 正文 我出身青樓馍惹,卻偏偏與公主長得像躺率,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子万矾,可洞房花燭夜當晚...
    茶點故事閱讀 43,580評論 2 349

推薦閱讀更多精彩內容