Android UI 自動化測試之UiObject
- UiObject 類介紹
代表一個元件物件,物件有許多模擬實際操作手機的方法與屬性 - 點選與長按物件
(1)元件區域位置關係
(2)點選長按相關 api
public void testClick() throws UiObjectNotFoundException{
UiObject clock=new UiObject(new UiSelector()
.resourceId("com.android.deskclock:id/analog_appwidget"));
//clock.click();
//clock.clickAndWaitForNewWindow();
// clock.clickBottomRight();
// sleep(3000);
// UiDevice.getInstance().pressBack();
// sleep(1000);
// clock.clickTopLeft();
// sleep(3000);
// UiDevice.getInstance().pressBack();
// sleep(1000);
//longclick
//clock.longClick();
UiDevice.getInstance().swipe(533, 612 , 535, 615, 500);
}
- 拖拽與滑動文字
(1)拖動元件示意圖
(2)拖拽文字相關 api
public void testDrag() throws UiObjectNotFoundException{
// UiObject object1=new UiObject(new UiSelector().text("聯絡人"));
// UiObject object2=new UiObject(new UiSelector().text("相簿"));
// //object1.dragTo(350,1704-500, 10);
// //object1.dragTo(object2, 30);
// object1.swipeUp(5);
UiObject recent=new UiObject(new UiSelector()
.resourceId("com.android.systemui:id/app_thumbnail_image"));
recent.swipeLeft(10);
}
- 輸入文字與清除文字
(1)輸入文字相關 API
public void testSetText() throws UiObjectNotFoundException{
// UiObject edit=new UiObject(new UiSelector()
// .resourceId("com.android.mms:id/embedded_text_editor"));
//
// edit.setText("qwertyuiop");
// sleep(2000);
// edit.clearTextField();
//接收者
UiObject r=new UiObject(new UiSelector()
.resourceId("com.android.mms:id/recipients_editor"));
UiObject w=new UiObject(new UiSelector().text("接收者"));
r.setText("kkkkkkkkkkkkk");
//將游標移動到行尾,使用backspace進行刪除
UiDevice.getInstance().pressKeyCode(KeyEvent.KEYCODE_MOVE_END);
while(!w.exists()){
UiDevice.getInstance().pressKeyCode(KeyEvent.KEYCODE_DEL);
}
//將游標移動到行首,使用delete鍵來刪除
}
(2)輸入文字與清除文字實現步驟說明
輸入文字:清除文字—輸入文字
清除文字:長按一鍵刪除
5. 獲取物件的屬性與屬性的判斷
(1)獲取物件的屬性
public void testGet() throws UiObjectNotFoundException{
UiObject r=new UiObject(new UiSelector()
.resourceId("com.android.mms:id/recipients_editor"));
String rec=r.getText();
System.out.println("HINT:"+rec);
System.out.println("CLASS:"+r.getClassName());
System.out.println("PACKAGE_Name:"+r.getPackageName());
System.out.println("PACKAGE_Name:"+r.getPackageName());
System.out.println("DESC:"+r.getContentDescription());
System.out.println("RECT:"+r.getBounds().left);
assertEquals("接收者", rec);
}
(2)獲取父類與子類節點
public void testNode() throws UiObjectNotFoundException{
UiObject down=new UiObject(new UiSelector()
.resourceId("com.cyanogenmod.filemanager:id/navigation_view_details_item")
.index(3));
// UiObject download=down.getChild(new UiSelector()
// .resourceId("com.cyanogenmod.filemanager:id/navigation_view_item_name"));
//
// download.click();
UiObject music=down.getFromParent(new UiSelector()
.resourceId("com.cyanogenmod.filemanager:id/navigation_view_details_item").index(5));
music.click();
}
(3)屬性的判斷
public void testIs() throws UiObjectNotFoundException{
UiObject wlan=new UiObject(new UiSelector()
.resourceId("com.android.settings:id/switchWidget"));
if(!wlan.isChecked()){
wlan.click();
}
}
- 手勢的操作
(1) 手勢相關操作
(2)手勢相關操作 API
public void testGesture() throws UiObjectNotFoundException{
UiObject object=new UiObject(new UiSelector()
.resourceId("com.android.gallery3d:id/photopage_bottom_controls"));
//object.pinchIn(80, 20);
//object.pinchOut(80, 20);
Point startPoint1, startPoint2, endPoint1, endPoint2;
startPoint1=new Point();
startPoint2=new Point();
endPoint1=new Point();
endPoint2=new Point();
startPoint1.x=157;startPoint1.y=183;
startPoint2.x=122;startPoint2.y=455;
endPoint1.x=948;endPoint1.y=195;
endPoint2.x=930;endPoint2.y=493;
object.performTwoPointerGesture(startPoint1, startPoint2, endPoint1, endPoint2, 50);
}
- 判斷物件是否存在
相關 API
public void testExist() throws UiObjectNotFoundException{
UiObject l=new UiObject(new UiSelector().text("聯絡人"));
if(l.exists()){
l.click();
}
UiObject create=new UiObject(new UiSelector().text("建立新聯絡人"));
if(create.waitForExists(5000)){
System.out.println("沒有任何聯絡人,需要建立");
create.click();
//建立步驟。。。。
}
}
相關推薦
Android UI 自動化測試之UiObject
UiObject 類介紹 代表一個元件物件,物件有許多模擬實際操作手機的方法與屬性 點選與長按物件 (1)元件區域位置關係 (2)點選長按相關 api public void testClick() throws UiObjectN
UI自動化測試之selenium(1)——selenium中的常用api
selenium api 目錄 1 對瀏覽器操作1.1 用webdriver打開一個瀏覽器1.2 最大化瀏覽器&關閉瀏覽器1.3 設置瀏覽器窗口大小1.4 打開測試頁面1.5 處理瀏覽器彈出的新窗口2 頁面元素定位3 如何對頁面元素進行操作3.1 WebElement相關方法3.2 iFram
UI自動化測試之Jenkins配置
前一段時間幫助團隊搭建了UI自動化環境,這裡將Jenkins環境的一些配置分享給大家。 背景: 團隊下半年的目標之一是實現自動化測試,這裡要吐槽一下,之前開發的測試平臺了,最初的目的是用來做介面自動化測試和效能測試,但由於各種原因,介面自動化測試那部分功能整個廢棄掉了,其中和易用性有很大關係,另外,也和我
WEB UI自動化測試之AutoMagic自動化測試平臺開源
作者介紹:網名: Ray介紹:笑起來像個孩子,冷起來是個迷。部落格:http://www.cnblogs.com/tsbc/2018年3月29日,Ray說準備把AutoMagic自動化測試管理平臺開源了!!!這是個好訊息,因為AutoMagic在其所在的企業中實踐應用,沉澱了
Espresso:快速的Android UI自動化測試
在我和很多Android開發者聊天的時候,我注意到他們在開發的過程中並不注重測試這一環節,原因是他們認為Android測試太難實現,或者難以整合到現有的工程中等等。但是實際上寫一個 Espresso並不是一件很難的事情,而且它能夠非常方便地整合到你的工程之中。 容易實現
Android UI自動化測試最佳實踐
轉載地址:http://qa.baidu.com/blog/?p=985 一. 概述 Android系統測試和Web的測試類似,有兩類自動化的方式:錄製回放與基於頁面元素操作的手工開發。由於錄製回放在長期維護與程式碼重用方面存在問題,這裡主要的方式還是後者,這也是Web
前端自動化測試之UI Recorder(一、介紹)
而且 行為 文件上傳 語言 系統 nod clas 調用 開發 UI Recorder是一款零成本的整體自動化測試解決方案,一次自測等於多次測試,測一個瀏覽器等於測多個瀏覽器! 支持所有用戶行為: 鍵盤事件, 鼠標事件, alert, 文件上傳, 拖放, svg, sha
前端自動化測試之UI RECORDER(二、PC錄制)
啟動服務 域名 run ports shadow 科學 兼容 webp htm PC錄制教程 準備工作: NodeJs環境 請自行先安裝好nodejs環境,在命令行執行node -v命令成功說明已經安裝成功 Chrome瀏覽器 JAVA環境 UI Recorder We
Android自動化測試之Monkeyrunner從零開始
控制 麻煩 關於 人員 bsp android開發 直接 記錄 自動 最近由於公司在組織一個Free CoDE的項目,也就是由大家自己選擇研究方向來做一些自己感興趣的研究。由於之前我學過一點點關於android的東西,並且目前android開發方興未艾如火如荼,但自動化測試
UI自動化測試POM設計之-maven工程
絕對路徑 pro 解決 unit 是否 分享 根據 osi ren 為了更好的管理UI自動化測試項目,介紹一下Maven項目創建以及應用 一. 配置Maven環境 1. 下載並安裝Maven 下載地址:http://maven.apache.org/downlo
Android自動化測試之——MonkeyRunner(1)
一、MonkeyRunner是什麼 MonkeyRunner是使用Jython(使用Java程式語言實現的Python)寫出來的,它提供了多個API,通過monkeyrunner API 可以寫一個Python的程式來模擬操作控制Android裝置app,測試其穩定性並通過截圖可以方便地記錄出現的問題。
Android自動化測試之——MonkeyRunner(2)
一、MonkeyRunner API MonkeyRunner API包含了三個模組在com.android.monkeyruner包中: 1、MonkeyRunner 一類用於MonkeyRunner程式的實用方法。該類提供了一種將MonkeyRunner連線到裝置或模擬器的方法。它還提供了為monk
Android自動化測試之——MonkeyRunner(3)
本文主要介紹MonkeyDevice的方法。 上文中,使用MonkeyRunner方法連線裝置並返回一個MonkeyDevice物件,使用該物件呼叫MonkeyDevice方法可實現對裝置的操作。主要包括:點選、拖拽、截圖、按鍵、輸入內容 一、常量 MonkeyDevice的touch()、press(
Android自動化測試之Monkeyrunner 指令碼編寫
# File: Test1.py# Vision: V1.0# Author: Findyou# 引入本程式所用到的模組from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice, MonkeyImage# 連線手機裝置device =
Appium+Python 自動化測試之二:啟動APP(Android篇)
android版本 inf 環境 哪些 aapt code div port ons 前一篇寫了環境安裝,這篇記錄是記錄如何啟動APP以及啟動APP之前要做哪些事。 Appium 啟動APP至少需要5個參數,分別是‘platformName‘,‘platformVersio
5.2Appium移動端自動化測試之連線Android模擬器
這裡大家先去下載一個夜神模擬器 1.aapt 環境變數配置 D:\androidsdk\android-sdk-windows\build-tools\24.0.0 目錄下找到aapt.exe,將這個路徑設定環境變數,新增到 path 下 --- 開啟 cmd。輸入 aapt
UI自動化測試系列之-----TestNg中使用繼承
TestNg中可以使用繼承,一些公關的操作可以放在父類中,比如開啟瀏覽器等可以放在@BeforeClass中,關閉則放在@AfterClass中。 當子類實現了自己的@BeforeClass,@Test和@AfterClass,則執行子類時,物件直接呼叫自己的。如果有其中
UI自動化測試工具AirTest學習筆記之從touch介面看影象識別
本篇更偏向於原始碼解析,適用於對airtest有一些瞭解,看過入門教程,寫過demo的童鞋,當然初學者也可以在本章的上手環節跳轉到網易官方最快5分鐘教程中學習,因為我覺得那篇教程已經夠好了,就不多寫入門教程了。 目錄 簡介 上手 進階 總結 簡介 Airtest
Android自動化測試之Monkey使用
Mokey是Android中的一個命令列工具,可以執行在模擬器裡或實際裝置中。它向系統傳送偽隨機的使用者事件流(如按鍵輸入、觸控式螢幕輸入、手勢輸入等),實現對正在開發的應用程式進行壓力
Android-自動化測試之MonkeyRunner教程(詳細)
# File: Test1.py# Vision: V1.0# Author: Findyou# 引入本程式所用到的模組from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice, MonkeyImage# 連線手機裝置device