1. 程式人生 > >好文章

好文章

apps 重裝 設置屏幕 multi 方法 navi ctr 後臺 hashcode

driver.close();//關閉
driver.closeApp();//關閉應用,其實就是按home鍵把應用置於後臺
driver.currentActivity();//獲取當前activity,比如:com.alipay.mobile.nebulacore.ui.H5Activity$H5Activity1,可用於斷言是否跳轉到預期的activity
driver.endTestCoverage(intent, path);//結束測試覆蓋率的檢測。(沒用過,不太了解)path為.ec文件的路徑。
driver.equals(obj);//相等
driver.execute(driverCommand, parameters);


driver.executeAsyncScript(script, args);
driver.executeScript(script, args);
driver.get(url);//跳轉到url頁面
driver.getAppStrings();//獲取應用的字符串 默認系統語言對應的Strings.xml文件內的數據。
driver.getAppStringMap(); //獲取應用的字符串
driver.getAppStringMap(language);//查找某一個語言環境對應的字符串文件Strings.xml內數據
driver.getCapabilities();
//獲取setCapability裏面設置的內容
driver.getClass();//獲取class名
driver.getCommandExecutor();
driver.getConnection();//獲取網絡連接狀態:WiFi,移動數據 setConnection(connection);//設置手機的網絡連接狀態,
driver.getContext();//設置上下文 (context),對hybrid app會用到返回的是NATIVE_APP或webview
driver.context(name);//切換到native或webview,填入的那麽值為NATIVE_APP或webview
driver.getContextHandles();
//獲取當前所有的NATIVE_APP或webview //可用上下文,context可以理解為可進入的窗口,如果是native則為native_app,如果是webview為對應webview;
driver.getCurrentUrl();//返回當前的url針對的是H5的webview
driver.getDeviceTime();//獲取設備時間
driver.getErrorHandler();//每次代碼執行到這一步就報錯,不知道是為什麽,可能是獲取了ErrorHandler
driver.getExecuteMethod();//一次嘗試返回的是[email protected]
driver.getFileDetector();//一次嘗試返回的是[email protected]
driver.getKeyboard();//一次嘗試返回的是[email protected]
driver.getMouse();//一次嘗試返回的是[email protected]
driver.getOrientation();//獲取當前屏幕的方向 driver.rotate(orientation);//設置屏幕橫屏或者豎屏
driver.getPageSource();//獲取 ui automator viewer裏面顯示的內容
driver.getRemoteAddress();//一次嘗試返回的是http://localhost:4723/wd/hub獲取的就是driver的配置
driver.getScreenshotAs(outputType);//截圖
driver.getSessionDetails();//返回的是setCapability裏面設置的內容
driver.getSessionId();//一次嘗試返回的是1d024a7b-aec1-4c63-a369-bee743216688
driver.getSettings();//一次嘗試返回的是{"ignoreUnimportantViews":false}
driver.getTitle();//獲取title
driver.getW3CStandardComplianceLevel();//一次嘗試返回的是 0
driver.getWindowHandle();//獲取當前窗口的Handle
driver.getWindowHandles();//獲取已打開所有窗口的Handle

driver.toggleLocationServices();
driver.hashCode();
driver.hideKeyboard();//隱藏鍵盤
driver.ignoreUnimportantViews(compress);
driver.installApp(appPath);//安裝app,appPath為應用的本地路徑
driver.isAppInstalled(bundleId);//根據包名來判斷該應用是否已經安裝
driver.isLocked();
driver.launchApp();//啟動應用
driver.location();
driver.lockDevice();//鎖屏多少秒後解鎖,lockScreen已經棄用
driver.longPressKeyCode(key);//按下某個鍵,具體哪個鍵由key值決定,key值定義在AndroidKeyCode類中。。sendKeyEvent在新版已經被刪掉
driver.longPressKeyCode(key, metastate);//按下某個鍵的同時按下附加鍵(Ctrl/Alt/Shift等),具體是哪些鍵,由key值(AndroidKeyCode類中定義)和metastate(AndroidKeyMetastate類中定義)決定。
driver.manage();
driver.moveTo(WebElement el);//以el為目標,從另一個點移動到該目標上 moveTo(int x, int y)以(x,y)點為目標,從另一個點移動到該目標上
driver.moveTo(WebElement el, int x, int y);//以控件el的左上角為基準,x軸向右移動x單位,y軸向下移動y單位。以該點為目標,從另一個點移動到該點上。
driver.navigate();//driver.navigate().forward(); // 前進navigate().back(); // 後退navigate().refresh(); // 刷新
driver.notify();
driver.notifyAll();
driver.openNotifications();//下拉屏幕顯示設置
driver.performMultiTouchAction(multiAction);//執行多步touch動作,由MultiTouchAction封裝的多步操作。
driver.performTouchAction(touchAction)//執行一個touch動作,該touch動作是由TouchAction封裝的。
driver.pinch(el);//2個手指操作控件,從對角線向中心點滑動,雙指往內移動來縮小屏幕
driver.pressKeyCode(key, metastate);//key是keycode這裏的metastate實際上就是控制按鍵,比如說shift鍵,alt鍵,ctrl鍵等控制鍵
driver.pullFile(remotePath);//將設備上的文件pull到本地硬盤上
driver.pullFolder(remotePath)//將設備上的文件夾pull到本地硬盤上,一般遠程文件為/data/local/tmp下的文件。
driver.pushFile(remotePath, base64Data);//將字符數組用64位格式寫到遠程目錄的某個文件中。也可以理解為把本地文件push到設備上。
driver.pushFile(remotePath, file);//也可以理解為把本地文件push到設備上。
driver.removeApp(bundleId);//卸載app.bundleId在Android中代表的是包名 installApp(“path/to/my.apk”) //安裝應用
driver.resetApp();//重置應用,相當於卸載重裝 .重啟應用,先closeApp然後在launchAPP
driver.rotate(orientation);//設置屏幕橫屏或者豎屏
driver.sendKeyEvent(int key);//按下某個鍵,具體哪個鍵由key值決定,key值定義在AndroidKeyCode類中
driver.sendKeyEvent(int key, Integer metastate);//按下某個鍵的同時按下附加鍵(Ctrl/Alt/Shift等),具體是哪些鍵,由key值(AndroidKeyCode類中定義)和metastate(AndroidKeyMetastate類中定義)決定。
driver.runAppInBackground(seconds);//將當前活躍的應用放在後臺運行.與resetApp類似,區別是resetApp關閉後立即啟動,而這個方法是關閉後等待seconds秒後再啟動。
driver.setConnection(connection);//設置手機的網絡連接狀態,可以開關藍牙、wifi、數據流量。通過NetworkConnectionSetting中的屬性來設置各個網絡連接的狀態。
driver.setErrorHandler(handler);
driver.setFileDetector(detector);
driver.setLocation(location);
driver.setLogLevel(level);
driver.startActivity(appPackage, appActivity);//在當前應用中打開一個 activity 或者啟動一個新應用並打開一個 activity
driver.swipe(startx, starty, endx, endy, duration);//滑動
driver.switchTo();//跳轉到 如driver.switchTo().window(handle);
driver.scrollTo(String text)//滾動到某個text屬性為指定的字符串的控件
driver.scrollToExact(String text)//滾動到某個text屬性包含傳入的字符串的控件
driver.tap(fingers, element, duration);//坐標點擊driver.tap(1, x坐標, y坐標,1)
driver.toggleLocationServices();
driver.toString();
driver.unlockDevice();
driver.wait(timeout, nanos);
driver.zoom(x, y);//driver.zoom(el);與pinch(el)的動作剛好相反。放大,兩個手指由控件的中心點慢慢向控件的左頂點後右底點滑動。

我對照著看了appium-client的官方文檔,然後對著demo演示,發現一些個別API都找不到,查了下資料才發現,問題出現在:
public static AppiumDriver driver;
如果改成這樣就ok了:public static AndroidDriver driver;
這裏要說下AppiumDriver和AndroiDriver的關系,AndroidDriver已經繼承了AppiumDriver,在AppiumDriver基礎上再封裝一些基本功能。

而AppiumDrvier是原生 webdriver的子類,所以一些webdriver的方法都是適用的。

因此我推薦適用實例化AndroiDriver對象。

好文章