appium-手勢密碼實現

來源:互聯網
上載者:User

標籤:thread   bsp   ppi   wait   width   ide   ogg   三個點   starty   

1. 紅色地區的範圍為:[66,575][1014,1523], 由於這塊是一個整塊,所以無法使用每個點的資料;因此只能使用LockPatternView對象拿到左上方的座標值

 

 

 

 

2.  原理, 將九宮格分割為6塊, 左上方頂部座標為[66,575], 我們假設為【startX,startY】, 整個地區的高度為height, 寬度為width,  則Xstep = width / 6,   Ystep = height / 6. 其中Xstep和Ystep分別表示被分割為6塊後,每一塊的寬度和高度。

     根據上述的變數,我們可以推算出:

    第一個點的座標為【startX+Xstep, startY + Ystep】;  第二個點的座標為【startX+3*Xstep, startY + Ystep】; 第三個點的座標為【startX+5*Xstep,startY + Ystep】

    第四個點的座標為【startX+Xstep, startY + 3*Ystep】;依次類推則可擷取到9宮格9個點的座標;

 3.  代碼如下:這邊完成的是一個從中間起點開始的L的手勢密碼

    

 1     public void setLockPattern(String id) throws Exception { 2         if (driver.getPageSource().contains("設定手勢密碼")) {//檢測是否是有手勢密碼出現 3             List<AndroidElement> element = driver.findElements(By.xpath(Constant.XPATH_VIEW + "[contains(@resource-id,‘" + id + "‘)]")); 4             Thread.sleep(1000);//觸摸前要等待1秒 5             AndroidElement gelemt = element.get(0);//擷取到這個元素把它當做一個對象來做 6             int startX = gelemt.getLocation().getX();//擷取元素的起始點x座標 7             int startY = gelemt.getLocation().getY();//擷取元素的起始點y座標 8             int height = gelemt.getSize().getHeight();//擷取元素的高 9             int width = gelemt.getSize().getWidth();//擷取元素的寬10             int xStep = width / 6;//把寬分成6份11             int yStep = height / 6;//把高分成6份12             int beginX = startX + 3*xStep;//計算觸摸起始點x座標13             int beginY = startY + yStep;//計算觸摸點y座標14             TouchAction ta = new TouchAction(driver); //初始化TouchAction15   16             //ta.press(beginX, beginY).waitAction(5000).moveTo(0, beginY + 2*yStep).waitAction(5000).moveTo(0, beginY + 4*yStep).waitAction(5000).moveTo((beginX + 2*xStep), beginY + 4*yStep).waitAction(5000).perform();17             ta.press(beginX, beginY).moveTo(0, beginY + 2*yStep).moveTo(0, beginY + 4*yStep).moveTo(beginX + 2*xStep, beginY + 4*yStep).release().perform();18             sleep(2000);19             ta.press(beginX, beginY).moveTo(0, beginY + 2*yStep).moveTo(0, beginY + 4*yStep).moveTo(beginX + 2*xStep, beginY + 4*yStep).release().perform();20             logger.info("手勢密碼設定完畢");21 22         }23     }

   1) ta.press(beginX,beginY),為從[beginX,beginY]座標開始; moveTo【x,y】為相對於[beginX,beginY]座標移動[x,y]的距離, 即最終的座標為【beginX+x, beginY+y】;

    2)waitAction(int ms), 指的是停留多少毫秒;

    3)release()方法,指的是釋放當前的手勢;

    4)perform()方法,顯示整個手勢鏈條;

    5)一般設定手勢密碼都是要兩次才能完成設定作業;

appium-手勢密碼實現

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.