本人在學習UiAutomator的時候,遇到添加收穫地址的測試用例,這裏的地址的地區是一級一級選擇的。所以寫了一個隨機選擇的方法。分享出來,供大家參考。
public void addAdress() throws UiObjectNotFoundException {
login();
waitForResourceIdAndClick("com.gaotu100.superclass:id/view_shared_tabbar_me");//點擊我的
waitForResourceIdAndClick("com.gaotu100.superclass:id/mylexuefragment_userinfo_container");//點擊進入個人中心
waitForTextAndClick("收貨地址");
sleep(1000);
waitForTextAndClick("添加");
writeTextByResourceId("com.gaotu100.superclass:id/order_address_name", "收貨人01");//輸入收貨人
writeTextByResourceId("com.gaotu100.superclass:id/order_address_mobile", "13120454219");//輸入手機號
waitForResourceIdAndClick("com.gaotu100.superclass:id/order_address_city_right_arrow");//點擊選擇地區
randomClickOpiton();//隨機選擇省
randomClickOpiton();//隨機選擇市
randomClickOpiton();//隨機選擇縣
writeTextByResourceId("com.gaotu100.superclass:id/order_address_detail", "詳細地址01");
waitForTextAndClick("保存");
String name = getTextByResourceId("com.gaotu100.superclass:id/order_address_name");//獲取收貨人
String mobile = getTextByResourceId("com.gaotu100.superclass:id/order_address_mobile");//獲取手機號
String adress = getTextByResourceId("com.gaotu100.superclass:id/order_address");//獲取詳細地址
assertEquals("收貨地址收貨人姓名錯誤!", "收貨人01", name);
assertEquals("收貨地址收貨人手機號錯誤!", "13120454219", mobile);
assertTrue(adress.contains("詳細地址01"));
waitForResourceIdAndClick("com.gaotu100.superclass:id/order_address_right_arrow");//點擊修改收貨地址
waitForTextAndClick("刪除");
waitForResourceIdAndClick("com.gaotu100.superclass:id/customer_dialog_ok");//點擊確定
}
其中randomClickOpiton()方法如下:public void randomClickOpiton() throws UiObjectNotFoundException {
int num = getUiObjectByClassName("android.widget.ListView").getChildCount();
int i = new Random().nextInt(num);
getUiObjectByResourceIdIntance("com.gaotu100.superclass:id/simpleitemview_left_text", i).clickAndWaitForNewWindow();
}