Robot Framework + Selenium2Library自動(dòng)化測(cè)試系列(10) - 字符串拼接和替換:工時(shí)表查詢2

寫(xiě)完前兩步測(cè)試步驟桨踪,現(xiàn)在就該寫(xiě)驗(yàn)證查詢的核心代碼了。我們先整理整理思路,思考下面兩個(gè)問(wèn)題:

1. 數(shù)據(jù)是否全面?首先打開(kāi)數(shù)據(jù)集文件TCTIMES-1.xls惕蹄,這是我們提前準(zhǔn)備好的泪蔫,其實(shí)到了這步再做第二個(gè)sheet里的數(shù)據(jù)集也可以逛拱。文件里面有4個(gè)員工,其中3個(gè)有工時(shí)表讲婚,Tester Four沒(méi)有竹捉。之所以這樣設(shè)計(jì)數(shù)據(jù)集文件就是要把沒(méi)有返回結(jié)果的情況也考慮進(jìn)去憨闰;

2. 這里的查詢需要有幾個(gè)檢查點(diǎn)呢泽示?我覺(jué)得應(yīng)該是兩個(gè)郎汪。第一個(gè)是有沒(méi)有返回結(jié)果;第二個(gè)是如果有返回結(jié)果弟断,結(jié)果是否正確叔汁。

這兩個(gè)問(wèn)題都得到答案后边篮,開(kāi)始動(dòng)手腾么。還是老方法悍汛,先寫(xiě)查詢的函數(shù)凑懂,然后把函數(shù)放到test case里調(diào)用。打開(kāi)RIDE,右擊Pages -> Timesheet.html -> New UserKeyword新建函數(shù)例驹,起名Search Timesheet By Employee Name圆丹,接受員工姓,員工名璃诀,以及期望結(jié)果總共三個(gè)參數(shù) - ${first},${last},和${expectedTimesheetNum}犀变。先別管${expectedTimesheetNum}懦傍,看前兩個(gè)參數(shù)娱俺。TCTIMES-1.xls文件里員工姓和名是分開(kāi)的。但是披诗,我搜索的時(shí)候是姓和名一起敲進(jìn)框框里的,后面的驗(yàn)證中也是驗(yàn)證整個(gè)名字存不存在立磁,不會(huì)把姓和名單獨(dú)考慮呈队。所以當(dāng)它們分別傳入到函數(shù)中時(shí),我先要把倆字符串合成一個(gè):

連接兩個(gè)字符串的關(guān)鍵字是Catenate唱歧,它屬于RF自帶的類(lèi)庫(kù)宪摧,有以下幾種使用方法:

默認(rèn)情況下接受兩個(gè)參數(shù),得到的是“${first} ${last}”迈喉,也就是中間會(huì)有一個(gè)空格绍刮。如果加一個(gè)參數(shù)SEPERATOR就可以自定義中間分隔符。很顯然我們這里用的是默認(rèn)方法挨摸,不過(guò)一會(huì)兒我們就會(huì)用到另外的方法。姓和名組成一個(gè)字符串后被賦給一個(gè)叫${searchkeyword}的變量岁歉,我把它定義成了局部變量得运,沒(méi)聲明在ObjRepository -> timesheet.html里,因?yàn)槌诉@個(gè)函數(shù)再?zèng)]有別的地方會(huì)用到它了:

有了名字就好辦了锅移,接下來(lái)在按下圖把輸入名字的操作寫(xiě)在第二行熔掺,把點(diǎn)擊查詢按鈕的操作寫(xiě)在第三行:

可以看到,現(xiàn)在輸入到搜索框的內(nèi)容已經(jīng)是姓名的整個(gè)字符串非剃。注意置逻,在第四行要有一個(gè)等待過(guò)程,為網(wǎng)頁(yè)搜索留出時(shí)間备绽。有時(shí)候網(wǎng)速太慢或內(nèi)容太多導(dǎo)致搜索時(shí)間很長(zhǎng)券坞,如果搜索還沒(méi)完成就開(kāi)始驗(yàn)證勢(shì)必會(huì)影響結(jié)果鬓催。

做完這步之后我們開(kāi)始驗(yàn)證第一個(gè)檢查點(diǎn)–看有沒(méi)有返回結(jié)果。輸入字符串以后如果有匹配的話就應(yīng)該返回結(jié)果了恨锚,比如Tester One宇驾。我們?cè)诨鸷鼮g覽器里打開(kāi)Firebug來(lái)看看工時(shí)表的xpath有什么變化:

只有關(guān)于員工Tester One的兩條工時(shí)記錄代碼段還顯示出來(lái),別的都不存在了猴伶。這樣題目就容易了课舍,在輸入姓名后,我們讓程序檢查員工工時(shí)代碼段的數(shù)目和預(yù)期結(jié)果是不是一樣不就得了么他挎?換句話說(shuō)筝尾,就是比較含有該姓名的xpath數(shù)量和預(yù)期的值是否一樣。我們之前已經(jīng)把預(yù)期結(jié)果寫(xiě)到了TCTIMES-1.xls的employee sheet里办桨,現(xiàn)在可以用到了忿等。對(duì)于Tester One來(lái)說(shuō),有2條就證明和預(yù)期結(jié)果一樣崔挖,測(cè)試通過(guò)贸街。代碼如下第4步到第8步:

第4步?jīng)]什么可說(shuō)的,一個(gè)小注釋?zhuān)瑳](méi)必要顯示在最后報(bào)告里狸相,因?yàn)槲抑幌敫嬖V自己現(xiàn)在開(kāi)始執(zhí)行第一個(gè)檢查點(diǎn)看看有沒(méi)有返回結(jié)果薛匪,僅此而已。

第5步和第6步里出現(xiàn)了三次${locTSTable_Records_EmployeeName}脓鹃,它代表員工工時(shí)的xpath逸尖。我們先在ObjRepository -> Timesheet.html里創(chuàng)建出來(lái),值是//table/tbody/tr/td[contains(text(),'||EMPLOYEE NAME||')]:

這個(gè)變量看起來(lái)有點(diǎn)特殊瘸右,||EMPLOYEE NAME||不是個(gè)定值劳坑,是個(gè)可替換的字符串,大家可以像理解函數(shù)一樣理解這個(gè)變量呛哟,||EMPLOYEE NAME||就相當(dāng)于變量中的參數(shù)癣诱。這么寫(xiě)的原因是我們的測(cè)試數(shù)據(jù)里有4位員工,每個(gè)員工的工時(shí)xpath都不一樣龄章,而不一樣的地方就是姓名吃谣。比如Tester One的xpath是//table/tbody/tr/td[contains(text(),'Tester One')],Tester Two的xpath是//table/tbody/tr/td[contains(text(),'Tester Two')]做裙,以此類(lèi)推岗憋。所以我們不能把這個(gè)變量寫(xiě)死,要讓程序每次執(zhí)行時(shí)都臨時(shí)把||EMPLOYEE NAME||替換成我們?cè)谒阉骺蛑休斎氲膯T工姓名锚贱。第5步就是在執(zhí)行替換過(guò)程仔戈,用到的關(guān)鍵字是Replace String。它接受三個(gè)參數(shù) – 要被替換的元素位置,被替換的是什么监徘,以及替換成什么晋修。

替換完了我們就可以數(shù)一數(shù)總共有多少個(gè)了,第6步里使用Get Matching Xpath Count耐量,這是個(gè)非常重要的語(yǔ)句飞蚓,就不說(shuō)三遍了。它在很多驗(yàn)證的步驟里都出現(xiàn)過(guò)廊蜒,得到的就是在當(dāng)前頁(yè)面中有多少個(gè)可見(jiàn)的xpath趴拧,再賦給另一個(gè)局部變量${timesheetCount}。這個(gè)關(guān)鍵字接受一個(gè)參數(shù)山叮,就是某個(gè)xpath著榴,直截了當(dāng)。

寫(xiě)到這里我們應(yīng)該意識(shí)到屁倔,在我們的例子中脑又,對(duì)于Tester One來(lái)說(shuō)${timesheetCount}應(yīng)該等于2,而對(duì)于Tester Four來(lái)說(shuō)${timesheetCount}應(yīng)該是0锐借,也就是沒(méi)有返回任何工時(shí)記錄问麸。第7步就是執(zhí)行比較的過(guò)程,用到的語(yǔ)句是Should be Equal as Strings钞翔。它默認(rèn)讓兩個(gè)字符串參數(shù)進(jìn)行比較严卖,${timesheetCount}雖然代表一個(gè)數(shù)量,但其數(shù)據(jù)類(lèi)型是字符串布轿。參數(shù)${expectedTimesheetsNum}也是個(gè)字符串哮笆,這就解釋了為什么之前我要在數(shù)據(jù)集中把期望結(jié)果那列轉(zhuǎn)換成字符串格式,就是方便在此進(jìn)行比較汰扭。如果你之前寫(xiě)成了numbers的格式那對(duì)不起了稠肘,您還得在這兒轉(zhuǎn)成字符串格式,否則字符串和numbers強(qiáng)行比較肯定會(huì)失敗萝毛。Should be Equal as Strings返回的是一個(gè)true或false的布爾值项阴,如果true就代表測(cè)試通過(guò)。

測(cè)試通過(guò)后珊泳,第8步在報(bào)告里寫(xiě)一個(gè)log鲁冯,告知測(cè)試完畢,如果測(cè)試通過(guò)了這條log會(huì)顯示出來(lái)色查。這樣,第一個(gè)檢查點(diǎn)的函數(shù)我們就寫(xiě)完了撞芍。

這篇文章的源代碼在[Test9](https://github.com/cslm/cslm.robotframework/tree/master/Test9)中秧了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市序无,隨后出現(xiàn)的幾起案子验毡,更是在濱河造成了極大的恐慌衡创,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,470評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件晶通,死亡現(xiàn)場(chǎng)離奇詭異璃氢,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)狮辽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)一也,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人喉脖,你說(shuō)我怎么就攤上這事椰苟。” “怎么了树叽?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,577評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵舆蝴,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我题诵,道長(zhǎng)洁仗,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,176評(píng)論 1 292
  • 正文 為了忘掉前任性锭,我火速辦了婚禮赠潦,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘篷店。我一直安慰自己祭椰,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,189評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布疲陕。 她就那樣靜靜地躺著方淤,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蹄殃。 梳的紋絲不亂的頭發(fā)上携茂,一...
    開(kāi)封第一講書(shū)人閱讀 51,155評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音诅岩,去河邊找鬼讳苦。 笑死,一個(gè)胖子當(dāng)著我的面吹牛吩谦,可吹牛的內(nèi)容都是我干的鸳谜。 我是一名探鬼主播,決...
    沈念sama閱讀 40,041評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼式廷,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼咐扭!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,903評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤蝗肪,失蹤者是張志新(化名)和其女友劉穎袜爪,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體薛闪,經(jīng)...
    沈念sama閱讀 45,319評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡辛馆,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,539評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了豁延。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片昙篙。...
    茶點(diǎn)故事閱讀 39,703評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖术浪,靈堂內(nèi)的尸體忽然破棺而出瓢对,到底是詐尸還是另有隱情,我是刑警寧澤胰苏,帶...
    沈念sama閱讀 35,417評(píng)論 5 343
  • 正文 年R本政府宣布硕蛹,位于F島的核電站,受9級(jí)特大地震影響硕并,放射性物質(zhì)發(fā)生泄漏法焰。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,013評(píng)論 3 325
  • 文/蒙蒙 一倔毙、第九天 我趴在偏房一處隱蔽的房頂上張望埃仪。 院中可真熱鬧,春花似錦陕赃、人聲如沸卵蛉。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,664評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)傻丝。三九已至,卻和暖如春诉儒,著一層夾襖步出監(jiān)牢的瞬間葡缰,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,818評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工忱反, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留泛释,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,711評(píng)論 2 368
  • 正文 我出身青樓温算,卻偏偏與公主長(zhǎng)得像怜校,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子注竿,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,601評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容