自動(dòng)化測(cè)試場(chǎng)景異常處理
在這里我們提到的AR場(chǎng)景異常,應(yīng)該理解為場(chǎng)景下不正常的輸入導(dǎo)致的報(bào)錯(cuò)。比如在登錄頁(yè)面上,我們輸入了錯(cuò)誤的用戶名或密碼,這個(gè)時(shí)候頁(yè)面通常會(huì)彈出一個(gè)錯(cuò)誤提示框,把錯(cuò)誤信息反饋給我們。
在自動(dòng)化測(cè)試?yán)锩?,我們需要?duì)這些報(bào)錯(cuò),也是異常進(jìn)行處理,一般的做法是把這個(gè)報(bào)錯(cuò)信息記錄下來(lái),之后處理下異常,然后繼續(xù)執(zhí)行后續(xù)的測(cè)試。
在這里我們以一個(gè)上海澤眾CRM客戶管理系統(tǒng)的登錄場(chǎng)景為例,來(lái)看一下場(chǎng)景的異常處理方法:
1.首先,我們來(lái)錄制一個(gè)登陸上海澤眾CRM客戶關(guān)系管理系統(tǒng)的腳本,我們?cè)诘顷懡缑孑斎胗脩裘兔艽a,點(diǎn)擊登陸,再點(diǎn)擊退出系統(tǒng),錄制的腳本信息如下所示:
ar.window("IEFrame_上海澤眾軟件科技有限公司客戶管理系統(tǒng) - Windows Internet Explorer").setValue("INPUT_text_username", "test"); //輸入用戶名
ar.window("IEFrame_上海澤眾軟件科技有限公司客戶管理系統(tǒng) - Windows Internet Explorer").setValue("INPUT_password_password", "test"); //輸入密碼
ar.window("IEFrame_上海澤眾軟件科技有限公司客戶管理系統(tǒng) - Windows Internet Explorer").clickControl("INPUT_submit_登 錄", 27, 6, "left"); //點(diǎn)擊登錄
ar.window("IEFrame_上海澤眾軟件科技有限公司客戶管理系統(tǒng) - Windows Internet Explorer").clickControl("A_退出系統(tǒng)", 23, 2, "left"); //點(diǎn)擊退出系統(tǒng)
2. 在這個(gè)登錄場(chǎng)景下,我們可以將用戶名和密碼進(jìn)行參數(shù)化處理,具體操作如下:
在原腳本輸入用戶名和密碼的位置,將具體的用戶名和密碼改為:"+pd.getFrom(“username”)和"+pd.getFrom(“password”)
即:
ar.window("IEFrame_上海澤眾軟件科技有限公司客戶管理系統(tǒng) - Windows Internet Explorer").setValue("INPUT_text_username", ""+pd.getFrom(“username”)); //輸入用戶名
ar.window("IEFrame_上海澤眾軟件科技有限公司客戶管理系統(tǒng) - Windows Internet Explorer").setValue("INPUT_password_password",""+pd.getFrom(“password”)); //輸入密碼
ar.window("IEFrame_上海澤眾軟件科技有限公司客戶管理系統(tǒng) - Windows Internet Explorer").clickControl("INPUT_submit_登 錄", 27, 6, "left"); //點(diǎn)擊登錄
ar.window("IEFrame_上海澤眾軟件科技有限公司客戶管理系統(tǒng) - Windows Internet Explorer").clickControl("A_退出系統(tǒng)", 23, 2, "left"); //點(diǎn)擊退出系統(tǒng)
3.設(shè)置參數(shù)表:
在信息框下方的參數(shù)表欄目中,我們可以自己手動(dòng)添加行和列。
參數(shù)表的第一列我們?cè)O(shè)置的是參數(shù)化字段的名稱,第一列第一行是用戶名:username;第一列第二行是密碼:password。這里的設(shè)置順序和一般腳本里面的參數(shù)化字段的順序一致,第一個(gè)參數(shù)化字段是用戶名,第二個(gè)參數(shù)化字段是密碼。
4.循環(huán)參數(shù)表設(shè)置:
設(shè)置好參數(shù)表中要循環(huán)的部分:
5.把要循環(huán)執(zhí)行的腳本放到循環(huán)體內(nèi),完整的腳本如下:
for(ParameterData pd : ar.getParameterDataList("ghf.xls")/*.subList(0, 3)*/)
{
//ar.parameterData = pd;//ar.parameterData可用于腳本之間傳遞參數(shù)
ar.window("IEFrame_上海澤眾軟件科技有限公司客戶管理系統(tǒng) - Windows Internet Explorer").setValue("INPUT_text_username",""+pd.getFrom("username"));// 輸入用戶名
ar.window("IEFrame_上海澤眾軟件科技有限公司客戶管理系統(tǒng) - Windows Internet Explorer").setValue("INPUT_password_password",""+pd.getFrom("password"));// 輸入密碼
ar.window("IEFrame_上海澤眾軟件科技有限公司客戶管理系統(tǒng) - Windows Internet Explorer").clickControl("INPUT_submit_登 錄",27,6,"left");// 點(diǎn)擊登錄
ar.window("IEFrame_上海澤眾軟件科技有限公司客戶管理系統(tǒng) - Windows Internet Explorer").clickControl("A_退出系統(tǒng)",23,2,"left");// 點(diǎn)擊退出系統(tǒng)
}
6.執(zhí)行腳本:
上面的過(guò)程沒(méi)有涉及到用戶名和密碼的錯(cuò)誤處理,下面我們把這些情況添加進(jìn)去,用戶名輸入錯(cuò)誤的時(shí)候會(huì)出現(xiàn)如下的報(bào)錯(cuò)信息:
密碼錯(cuò)誤會(huì)出現(xiàn)如下的報(bào)錯(cuò)信息:
如果出現(xiàn)這兩種情況,我們要把結(jié)果異常的腳本錄制下來(lái),然后,繼續(xù)執(zhí)行后面的測(cè)試:
參數(shù)表設(shè)計(jì):
完整的腳本如下:
for(ParameterData pd : ar.getParameterDataList("ghf.xls")/*.subList(0, 3)*/)
{
//ar.parameterData = pd;//ar.parameterData可用于腳本之間傳遞參數(shù)
ar.window("IEFrame_上海澤眾軟件科技有限公司客戶管理系統(tǒng) - Windows Internet Explorer").setValue("INPUT_text_username",""+pd.getFrom("username"));// 輸入用戶名
ar.window("IEFrame_上海澤眾軟件科技有限公司客戶管理系統(tǒng) - Windows Internet Explorer").setValue("INPUT_password_password",""+pd.getFrom("password"));// 輸入密碼
ar.window("IEFrame_上海澤眾軟件科技有限公司客戶管理系統(tǒng) - Windows Internet Explorer").clickControl("INPUT_submit_登 錄",27,6,"left");// 點(diǎn)擊登錄
if (ar.windowExist("#32770_來(lái)自網(wǎng)頁(yè)的消息")){
String str1 = ar.window("#32770_來(lái)自網(wǎng)頁(yè)的消息").getProperty("Static_用戶名不存在!", "name");
System.out.println(str1);
ar.window("#32770_來(lái)自網(wǎng)頁(yè)的消息").clickControl("Button_確定", 34, 16, "left");
} else if (ar.windowExist("#32770_來(lái)自網(wǎng)頁(yè)的消息_2")){
String str2 = ar.window("#32770_來(lái)自網(wǎng)頁(yè)的消息_2").getProperty("Static_密碼錯(cuò)誤!", "name");
System.out.println(str2);
ar.window("#32770_來(lái)自網(wǎng)頁(yè)的消息_2").clickControl("Button_確定_2", 53, 16, "left");
}else if (ar.windowExist("IEFrame_上海澤眾軟件科技有限公司客戶管理系統(tǒng) - Windows Internet Explorer")){
System.out.println("登錄成功!");
ar.window("IEFrame_上海澤眾軟件科技有限公司客戶管理系統(tǒng) - Windows Internet Explorer").clickControl("A_退出系統(tǒng)",23,2,"left");// 點(diǎn)擊退出系統(tǒng)
}
}
下面我們執(zhí)行下腳本,看看結(jié)果:
腳本運(yùn)行成功,并且我們把參數(shù)表中每一組的執(zhí)行結(jié)果都輸出到輸出區(qū)域了,我們成功了!