Appium日記20161031 徐慧迅

今天主要講了幾個要點,分別爲屏幕滑動,設置屏幕密碼圖案,九宮格解鎖還有上傳下載文件,淘寶最後的付款流程(利用二維座標定位)還有渠道包定位。數組

整理下筆記。app

第一點:屏幕滑動,獲取屏幕分辨率測試

File screen = driver.getScreenshotAs(OutputType.FILE);spa

try {code

BufferedImage bufferedImage = ImageIO.read(screen);orm

int width = bufferedImage.getWidth();ip

int height = bufferedImage.getHeight();element

System.out.println("width:"+width+"height:"+height);rem

driver.swipe(width/2,height*3/4, width/2,height/4, 1000);get

} catch (IOException e) {

e.printStackTrace();

}

備註:獲取手機屏幕的大小,而後再實現滑動。

要點:

1,咱們經過屏幕截圖來讀取數據,取長寬,而後再用swipe從下屏3/4處到1/4,若有異常,打印出來。printStackTrace()就是打印異常。

2,屏幕若是往右劃,那麼width9/101/10(因人而異),同理,往下翻數據,從下往上取數據。

後面我又從網上找到了一種方法

是根據座標滑動的,這種方法把座標定的比較肯定

 

JavascriptExecutor js = (JavascriptExecutor) driver;

HashMap<String, Double> swipeObject = new HashMap<String, Double>();

swipeObject.put("startX", startX);

swipeObject.put("startY", startY);

swipeObject.put("endX", endX);

swipebject.put("endY", endY);

swipeObject.put("duration", duration);

swipeObject.put("element", Double.valueOf(((RemoteWebElement) element).getId()));

js.executeScript("mobile: swipe", swipeObject);

 

X,Y可爲coordinator,也能夠是percentduration單位爲秒

②能夠指定的element,也能夠不指定

appium mac端有swipe的按鈕能夠試下

 

 

    

第二點,就是設置屏幕密碼圖案

這裏咱們講到了TouchAction

 //WebElement el=driver.findElementById("");

TouchAction action1 = new TouchAction(driver);

//action1.press(el).release().perform();

action1.press(260, 920).moveTo(260,0).moveTo(260,0).moveTo(0,280).release().perform();

Thread.sleep(3000);

 

 

要點:

1,座標是採用相對值去定位的。這一點要記清楚。

第三,就是九宮格解鎖手機鎖定了

這裏我先放代碼上來

 

 

 

要點:

1,仍然是經過座標去定位,可是他這個是把咱們屏幕分紅了幾塊。他的值有ystep,beginX,beginY,他的startX,starty就是咱們常看法鎖的第一個鍵,他等於把九個點鏈接起來當作一個正方形去定位。這樣咱們的獲得的值就只要經過getsize()去獲得了。

第四點,上傳下載文件

pullFile(remotePath):上傳文件

driver.pullFile(remotePath):下載文件

pullFolder(remotePath):下載文件夾

上傳文件舉例:

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"

pushFile(String remotePath, byte[] base64Data)

要點:

 將字符數組用64位格式寫到遠程目錄的某個文件中。也能夠理解爲把本地文件push到設備上。

 pullFile(String remotePath)

 將設備上的文件pull到本地硬盤上

 pullFolder(String remotePath

將設備上的文件夾pull到本地硬盤上,通常遠程文件爲/data/local/tmp下的文件。

 

五,淘寶流程已完成,最後付款

 

 

 

 

要點:

這是第二種方法,咱們一排一排來,經過startX ,endX startY ,endY來取值,封裝了top的方法來去

而第一種,就是經過座標來取值,不要分爲left right,center,直接經過本身的座標,與九宮格相似。

 

第六點:渠道包測試

尚在執行

相關文章
相關標籤/搜索