一、UiSelector類介紹
//通過各種屬性與節點關系定位組件
簡單實例:public void testDemo2()
throws UiObjectNotFoundException{UiSelector l=
new UiSelector().text("相機");
//搜索條件
UiObject object=
new UiObject(l);
//一句搜索條件找到對象
object.click();//操作對象
} ?
二、Androiud的布局與組件及組件屬性介紹
1.Android常用布局
TablesAre
| 線性布局 | linearLayout |
| 表格布局 | TableLayout |
| 相對布局 | RelativelLayout |
| 幀布局 | FrameLayout |
| 網格布局 | GridLayout |
| 絕對布局 | AbsoluteLayout |
2.Android常用組件
//文本框、編輯框、按鈕、單選按鈕、復選框、狀態開關按鈕、拖動條等等
3.Android組件屬性介紹
屬性值值類型例子
| index | int | 0 |
| instance | int | 5 |
| class | String | android.widget.TextView |
| package | String | com.jian.test |
| Content desc | String | string |
| checkable | boolean | false |
| clecked | boolean | false |
| clickable | boolean | true |
| enabled | boolean | false |
| focusable | boolean | false |
| focused | boolean | false |
| Scrollable | boolean | false |
| Long-clickable | boolean | false |
| password | boolean | false |
| selected | boolean | false |
| bounds | Rect | [366,999][708,1197] |
三、四種匹配關系的介紹
1.四種匹配關系介紹
完全匹配(默認)
包含匹配(Contains)
正則匹配(Matches)–可以包含完全匹配、包含匹配、起始匹配
起始匹配(StartWith)
2.例子
匹配字符串:0123456789
完全匹配:0123456789
包含匹配:45678
正則匹配:\d{10}
起始匹配:01234
四、節點關系介紹
五、對象搜索-文本與描述
1.文本屬性定位對象
返回值API說明
| UiSelector | text(String text) | 文本 |
| UiSelector | textContains(String text) | 文本包含 |
| UiSelector | textMatches(String regex) | 文本正則 |
| UiSelector | textStartsWith(String text) | 文本起始匹配 |
public void testDemo1()
throws UiObjectNotFoundException{//完全匹配:瀏覽器UiSelector l1=
new UiSelector().text("瀏覽器"
);UiObject object1=
new UiObject(l1);object1.click();//包含匹配:覽器UiSelector l2=
new UiSelector().textContains("覽器"
);UiObject object2=
new UiObject(l2);object2.click();//正則匹配:.*覽.*UiSelector l3=
new UiSelector().textMatches(".*覽.*"
);UiObject object3=
new UiObject(l3);object3.click();//起始匹配:瀏覽UiSelector l4=
new UiSelector().textStartsWith("瀏覽"
);UiObject object4=
new UiObject(l4);object4.click();
} ?
2.描述屬性定位對象
返回值API說明
| UiSelector | description(String desc) | 描述 |
| UiSelector | descriptionContains(String desc) | 描述包含 |
| UiSelector | descriptionMatches(String regex) | 描述正則 |
| UiSelector | descriptionStartsWith(String desc) | 描述開始字符匹配 |
public void testDesc()
throws UiObjectNotFoundException{//完全匹配:應用UiSelector selector=
new UiSelector().description("應用"
);UiObject object=
new UiObject(selector);object.click();//包含匹配:UiSelector selector1=
new UiSelector().descriptionContains("用"
);UiObject object1=
new UiObject(selector1);object1.click();//正則匹配:UiSelector selector2=
new UiSelector().descriptionMatches("應.*"
);UiObject object2=
new UiObject(selector2);object2.click();//起始匹配:UiSelector selector3=
new UiSelector().descriptionStartsWith("應"
);UiObject object3=
new UiObject(selector3);object3.click();} ?
六、對象搜索-類名與包名
1.類名屬性定位:
返回值API說明
| UiSelector | className(String className) | 類名 |
| UiSelector | classNameMatches(String regex) | 正則類名 |
?
(1)class.getName(推薦書寫方式)
(2)完整類名方式:android.widger.LinearLayout
(3)正則方式
(4)常量方式
public void testDemo2()
throws UiObjectNotFoundException{//完全匹配UiSelector selector =
new UiSelector().className("android.view.View"
).instance(3);
//instance(3)表示界面上從上到下第4-1個viewUiObject object=
new UiObject(selector);object.click();//正則匹配UiSelector selector =
new UiSelector().classNameMatches(".*View"
).instance(4);
//instance(3)表示界面上從上到下第5-1個viewUiObject object=
new UiObject(selector);object.click(); //class.getName輸入方式UiSelector selector =
new UiSelector().className(View.
class.getName()).instance(3);
//instance(3)表示界面上從上到下第5-1個viewUiObject object=
new UiObject(selector);object.click();} ?
2.包名屬性定位
返回值API說明
| UiSelector | packageName(String name) | 包名 |
| UiSelector | packageNameMatches(String regex) | 包名正則 |
public void testDemo3()
throws UiObjectNotFoundException{UiSelector selector =
new UiSelector().packageName("com.android.deskclock"
);UiObject object=
new UiObject(selector);object.click();} ?
七、對象搜索-索引與實例
1.索引與實例說明
1)索引index:指在同級中的編號,在兄弟類中的主鍵的編號
2)實例instance:整個布局文件中的編號,同一個類(比如6.2中的view類)的同級編號
2.索引與實例屬性定位對象
返回值API說明
| UiSelector | index(int index) | 索引 |
| UiSelector | instance(int instance) | 實例 |
public void testIndex()
throws UiObjectNotFoundException{//indexUiSelector selector =
new UiSelector().className("android.widget.ImageButton").index(1
);UiObject object=
new UiObject(selector);object.click();UiDevice.getInstance().pressBack();//instanceUiSelector selector1 =
new UiSelector().className("android.widget.ImageButton").instance(2
);UiObject object1=
new UiObject(selector1);object1.click();} ?
八、對象搜索-特殊屬性與節點
1.特殊屬性定位對象
返回值API說明
| UiSelector | checked(booleean val) | 選擇屬性 |
| UiSelector | clickable(boolean val) | 可點擊屬性 |
| UiSelector | enabled(boolean val) | enabled屬性 |
| UiSelector | focusable(boolean val) | 焦點屬性 |
| UiSelector | focused(boolean val) | 當前焦點屬性 |
| UiSelector | longClickable(boolean val) | 長按屬性 |
| UiSelector | scrollable(boolean val) | 滾動屬性 |
| UiSelector | selected(boolean val) | 背景選擇屬性 |
public void testDemo4()
throws UiObjectNotFoundException{//checkable[開啟wifi(界面默認在設置界面的情況下),由于有wifi和藍牙兩個可點擊屬性,instance定位]UiObject swtitichObj=
new UiObject(
new UiSelector().checkable(
true).instance(0
));swtitichObj.click();//checked[關閉了wifi(界面默認在設置界面的情況下)]UiObject swtitichObj=
new UiObject(
new UiSelector().checked(
true).instance(0
));swtitichObj.click();//enable[界面默認在無編輯的信息框,buttom為發送按鈕]UiObject send=
new UiObject(
new UiSelector().enabled(
false)); System.out.println(send.getClassName());//獲取并輸出這個屬性的類名//focused[在發送消息界面,光標默認停放位置在聯系人或信息框]UiObject focusedObj=
new UiObject(
new UiSelector().focused(
true));focusedObj.setText("Jian");
//輸入字符"Jian"//longClickable[界面默認位置為桌面首頁,多條件定位]UiObject longclick=
new UiObject(
new UiSelector().longClickable(
true).index(4
));longclick.click();//scrollable[界面默認位置為文件管理器界面]UiScrollable scrollable=
new UiScrollable(
new UiSelector().scrollable(
true));scrollable.scrollForward();//向下滾動一下scrollable.scrollBackward();
//向上滾動一下
} ?
2.節點屬性定位對象
返回值API說明
| UiSelector | childSelector(UiSelector selector) | 從當前類中往下遞歸找符合條件的子類組件 |
| UiSelector | formPrent(UiSelector selector) | 從父類往下遞歸找符合條件的組件 |
public void testDemo5()
throws UiObjectNotFoundException{//childSelector[界面停留在文件管理界面]例一:UiScrollable scrollable=
new UiScrollable(
new UiSelector().scrollable(
true).childSelector(new UiSelector().text("Android"
)));scrollable.click(); //childSelector[界面停留在文件管理界面]例二:UiObject focusedObj=
new UiObject(
new UiSelector().childSelector(
new UiSelector().text("Android"
)));focusedObj.click();//formPrent[界面停留在文件管理界面]先定位父類再定位主類UiObject PrentObj=
new UiObject(
new UiSelector().resourceId("com.cyanogenmod.filemanager:id/navigation_view_details_item"
).fromParent(new UiSelector().className("android.widget.LinearLayout").index(1)));
//先定位父類再定位主類
PrentObj.click();} ?
九、對象搜索-資源ID(推薦使用)
1.資源ID說明
1)資源ID屬性:
每一個組件都會的編號,也就是資源ID
2)對應Android屬性:
XML文件下的Android:ID屬性
2.資源ID定位對象
返回值API說明
| UiSelector | resourceId(String id) | 資源ID |
| UiSelector | resourceIdMatches(String regex) | 資源ID正則 |
public void testDemo6()
throws UiObjectNotFoundException{//resourceId(String id)//定位不同ID的組件UiObject resoursId=
new UiObject(
new UiSelector().resourceId("com.cyanogenmod.filemanager:id/ab_filesystem_info"
)); resoursId.click();//定位相同ID的組件UiObject resoursId1=
new UiObject(
new UiSelector().resourceId("com.cyanogenmod.filemanager:id/navigation_view_details_item"
).index(3));
//通過增加多個條件來定位(這里使用index)
resoursId1.click();//resourceIdMatches(String regex)UiObject resoursId2=
new UiObject(
new UiSelector().resourceIdMatches(".*/navigation_view_details_item").index(3
)); resoursId2.click();
} ?
轉載于:https://www.cnblogs.com/JianXu/p/5158396.html
總結
以上是生活随笔為你收集整理的2.UiSelector API 详细介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。