標籤:pre 通知欄 util 3.1 use install drive nta byte
1.擷取資訊類:
1.1 擷取當前介面的組件:
driver.currentActivity(); //擷取當前介面的activity,可用於斷言是否跳轉到預期的activity
1.2 擷取當前頁面的樹形結構原始碼
driver.pagesource(); //擷取當前頁面的樹狀結構圖
2.App安裝與卸載相關類API
2.1 判斷APP是否安裝
driver.isAppInstalled("package name"); //判斷應用是否已安裝
driver.installApp(appPath); //安裝APP
driver.removeApp(StringbundleId); //卸載包,Android中是包名,IOS是bundleId
driver.closeApp(); //關閉應用,按住Home鍵把應用退到後台
driver.launchApp(); //啟動應用
driver.resetApp(); //先close再launch
2.2 啟動其他應用:
driver.startActivity("com.android.camera", ".CameraLauncher");
3.設定相關類:
3.1 擷取和設定網路狀態
int status = driver.getNetworkConnection().value; //擷取網路狀態
System.out.println(status);
driver.setNetworkConnection(new NetworkConnectionSetting(status)); //設定網路狀態
//或者
driver.setNetworkConnection(new NetworkConnectionSetting(false, true, false));
4.檔案操作類:
4.1.push檔案、pull檔案
File file = new File("d:\\test.txt"); //test.txt內容為"test"
String content = null;
try {
content = FileUtils.readFileToString(file);
} catch (IOException e) {
e.printStackTrace();
}
byte[] data = Base64.encodeBase64(content.getBytes());
driver.pushFile("sdcard/test.txt", data);
byte[] resultDate = driver.pullFile("sdcard/test.txt");
System.out.println(new String(Base64.decodeBase64(resultDate))); //列印結果為"test"
5.擷取控制項類(擷取多個元素只需要將findElement改成findElements即可):
5.1通過元素id尋找當前頁面的目標元素:
driver.findElementById("id"); //通過id定位元素
5.2 通過元素name尋找當前頁面的目標元素:
driver.findElementByClassName("classname"); //通過name定位元素
5.3 通過元素Xpath尋找當前頁面的目標元素:
driver.findElementByXpath("xpath"); //通過xpath定位元素
5.4 通過元素的name值定位(也就是text)
driver.findElementByName("name"); //通過text值定位
5.5 混合定位,通過Xpath和index等聯合定位
driver.find_element_by_xpath("//android.widget.TextView[contains(@text,‘圖庫‘)]") //在頁面檢測所有的android.widget.TextView類中含有text="圖庫"的元素
6.使用者操作類:
6.1 點擊事件:
1)driver.click();
2)driver.tap(position.duration); //類比手指點擊,可設定按住時間長度(ms)
如:driver.tap([(300,500)],10)
6.2 搖一搖手機
1)driver.shake()
6.3 輸入事件
1)driver.elememt.sendKeys();
2)driver.elememt.sendText();
6.4 滑動螢幕(翻屏和快速移動):
driver.swipe(startX,startY, endX,endY, during(ms));//將屏螢幕從(startX,startY)滑動到(endX,endY)間隔during(ms)
driver.flick(startX,startY,endX,endY) //按住A(startX,startY)點快速移動到B(endX,endY)點
6.5 縮放事件(適合測試類別似有運動地圖的情境):
1)driver.pinch(element,percent,steps); //在元素上執行縮小操作,percent和steps可不寫,當不寫時表示預設
如:driver.pinch(element,150,30)
2)driver.zoom(element,percent,steps); //在元素上執行放大操作,percent和steps可不寫,當不寫時表示預設
如:driver.zoom(element,200,50)
6.6 長按事件:
1)driver.longPress();
6.7 Keyevent事件
driver.keyevent("4") #返回鍵操作
6.8 開啟和關閉操作:
driver.close() //關閉當前視窗
driver.quit() //退出指令碼運行並關閉每個相關的視窗串連
6.9 擷取視窗的高和寬
driver.manage().window().getSize().width;
driver.manage().window().getSize().height;
7.等待Wait相關類;
7.1 sleep方法:
Thread.sleep(60000) 強制等待60s //強制等待60s
7.2 implicitlyWait方法
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); //隱式等待,全域等待30S不管元素是u否已經載入
7.3 WebDriverWait方法(顯示等待,需增加一定等待時間,可通過WebDriverWait和util來決定)
7.4 waitActivity方法(隱式等待,需接受三個參數,Activity名稱、timeout超出時間和檢測時間間隔(S)):
driver.waitActivity("Activity",timeout(s),during(s));
8.AppiumDriver輔助類:
8.1 截屏並儲存本地
public static void ScreenShot(AndroidDriver driver,String ScreenName){
String dir_name = System.getProperty("user.dir")+"\\"+"異常圖片";
if(!(new File(dir_name).isDirectory())){
new File(dir_name).mkdir();
}
File screen = driver.getScreenshotAs(OutputType.FILE);
try{
System.out.println("異常圖片儲存路徑:"+new File(dir_name));
FileUtils.copyFile(screen, new File(dir_name+"\\"+ScreenName+".jpg"));
}catch(Exception e){
e.printStackTrace();
}
}
8.2 開啟通知欄介面:
driver.openNotifications();
8.3 鎖屏:
driver.lockScreen(2);//鎖屏
//判斷是否鎖屏
driver.isLocked();
8.4 自動滑動列表
driver.scrollTo("text"); //自動滑動列表
//或者
driver.scrollToExact("text");
Appium基礎五:appium相關API