uiautomator的坑和AAPT命令方式啟動一個應用程序


最近在使用UIautomator完成公司的一個主流程的自動化,因為不適用H5IOS所以會放棄這個工具的使用,現在記錄在使用uiautomator的一些問題:

案列1:使用命令去啟動要運用的apk

使用命令方式啟動,可以使用SDK中自帶的aapt工具,路徑是在E:\Soft\JAVA\adt-bundle-windows-x86_64-20131030\sdk\build-tools\android-4.4,使用時,需要在我的電腦中去配置,配置百度能解決

1..驗證aapt是否可用,如下,驗證aapt的包名

 命令行:aapt dump badging 安裝包地址,如果能出現包名而不是報錯的提示,則aapt能夠使用

2.Uiautomator中使用aapt的方式啟動進程:

am start -n com.hzins.mobile / com.hzins.mobile

Am start -n 包名/啟動的activity

如果不知道啟動的進程,在aapt中單獨使用命令,查看里面的activity,如下圖所示

 

 

測試代碼:Runtime.getRuntime().exec("am start -n com.xxxxx.mobile(packgename)/com.hxx.xxx.act.ACT_Splash(stactivity) ");

 

案列2,在登錄控件中,登錄框和密碼框,是相同resouceid,class,並且密碼框沒有文本標識是哪一個文本框,

解決辦法:可用“insrance”標識定位,相同控件中

instance(0)表示第一個,instance(1)表示第二個 

不寫instance就默認是instance(0) 

3.案列:在提交登錄時,某些控件的clickables是為flase這樣是就不能使用點擊如:

1.提交訂單,有提示未登錄

2.控件的點擊的屬性不可用,怎么獲取

 

解決辦法:獲取外層可用的控件,注意標識

3.捕獲異常監聽,如啟動時升級提醒和顯示框

 

解決:uiwatcher結構應該是這樣: main(){ 注冊watcher 一個uiselector相關操作 刪除watcher } 還需要注意:swipe(startX, startY, endX, endY, steps) --在手機上滑動,從(startX,startY)(endX,endY)steps表示滑動的這個距離分為幾步完成,數目越少,滑動幅度越大。

  String watcherName = "watcher1";

 getUiDevice().getInstance().registerWatcher(watcherName, new UiWatcher(){//android.widget.ImageView是導航頁第一個頁面的控件

 UiObject runte=new UiObject(new UiSelector().className("android.widget.ImageView"));

@Override

public boolean checkForCondition() {

// TODO Auto-generated method stub

if(runte.exists())

{

 

int x=getUiDevice().getInstance().getDisplayWidth();

int y=getUiDevice().getInstance().getDisplayHeight();

//getUiDevice().swipe(startX, startY, endX, endY, steps)

 getUiDevice().swipe(600, y/2,x/4,y/2,5);

}

Log.d("tag", "成功了點擊");

return true;

 

}

 });

 //去判定首頁任意一個控件

UiObject runte=new UiObject(new UiSelector().className("android.widget.ImageView").resourceId("com.hzins.mobile:id/bt_ok"));

runte.clickAndWaitForNewWindow();

// 刪除watcher

getUiDevice().removeWatcher(watcherName);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM