當(dāng)前位置:兩周學(xué)會(huì)自動(dòng)化測(cè)試 >> 自動(dòng)化測(cè)試場(chǎng)景異常處理

自動(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ū)域了,我們成功了!