Appium 實(shí)現(xiàn) LockViewPatter 手勢(shì)密碼輸入方法之一

問(wèn)題描述
問(wèn)題的產(chǎn)生是這樣滴喉誊,俺們公司的app登錄時(shí)有一步需要輸入手勢(shì)密碼召边,九宮格那種的,看下圖:

Paste_Image.png

解決目標(biāo)是需要用appium自動(dòng)的輸入手勢(shì)密碼裹驰。

搜解決方案
于是乎,上網(wǎng)搜現(xiàn)成的經(jīng)驗(yàn)片挂,有了如下結(jié)果:

Paste_Image.png

遇到了問(wèn)題
按照?qǐng)D示幻林,九宮格的9個(gè)點(diǎn)應(yīng)該為9個(gè)ImageView對(duì)象,如法炮制使用UIAutomator擼一遍咱要測(cè)試的app音念,發(fā)現(xiàn)現(xiàn)實(shí)有點(diǎn)骨干 ?? 看下圖

Paste_Image.png

原來(lái)咱公司的app手勢(shì)密碼鍵盤(pán)用了LockViewPattern沪饺,沒(méi)有辦法拿到9個(gè)點(diǎn)對(duì)象;

也就是說(shuō)網(wǎng)上搜到的現(xiàn)成方法不適用我遇到的問(wèn)題??

換個(gè)思路 另辟蹊徑
那咋辦呢闷愤,這時(shí)理所應(yīng)當(dāng)?shù)南氲搅薚ouchAction整葡;利用觸摸動(dòng)作行為,直接做相應(yīng)的手勢(shì)讥脐。上網(wǎng)一搜就可以找到一段示例代碼

touchAction.press(beginX,beginY).moveTo(xStep,yStep).moveTo(xStep,yStep).release().perform();

雖然之前我沒(méi)有接觸過(guò)app的自動(dòng)化測(cè)試遭居,但是從這段例子代碼中我得到了一些暗示啼器;我猜他的意思是 在 (beingX,beginY)點(diǎn)按下手指,然后先移動(dòng) (xStep,yStep), 再移動(dòng)(xStep,yStep) 最后松開(kāi)俱萍。

實(shí)操辦法
為了簡(jiǎn)化測(cè)試難度端壳,我設(shè)定的手勢(shì)密碼是沿中間三個(gè)點(diǎn) 從上往下畫(huà)一條直線;

但是直接用坐標(biāo)點(diǎn)找會(huì)有一些問(wèn)題枪蘑,比如手機(jī)屏幕大小不同损谦,找點(diǎn)的位置可能會(huì)有偏差,所以輸入hardcode坐標(biāo)點(diǎn)是絕對(duì)不可取的岳颇;怎么辦呢照捡,看下圖

Paste_Image.png

目前我從LockPatternView對(duì)象上可以拿到它的左上角起點(diǎn)的坐標(biāo) (beginX,beginY), 高度 height, 寬度width;如果是從中間第2點(diǎn) 垂直往下一條直線话侧,那么第二個(gè)點(diǎn)的x軸坐標(biāo)肯定是 beginX + width/2 栗精,畢竟在中點(diǎn)茎刚; 它的Y軸坐標(biāo) 大約為 beginY + height/4 亏镰; 從第二個(gè)點(diǎn)起始申屹,先往下走到第5點(diǎn) 然后再是 第8點(diǎn)却音; 它們大約要移動(dòng) 2個(gè) 1/4 * height的高度诽表;有了這些可變的相對(duì)坐標(biāo)位置吨铸,就不怕屏幕大小變化了 ??

嘗試了幾款屏幕大小不同的手機(jī)纺荧,均獲成功 ??

Paste_Image.png

當(dāng)然這應(yīng)該只是解決思路之一捣郊,歡迎大家補(bǔ)充其他更好的辦法??

代碼參考

    public static void setLockPattern(AppiumDriver driver) throws Exception{
        List<WebElement> view = Toolkit.waifForExistence("http://android.view.View[contains(@resource-id,'view_lock_pattern')]",driver); //九宮格鍵盤(pán)view
        WebElement welem = view.get(0);
        int startX = welem.getLocation().getX();
        int startY = welem.getLocation().getY();
        int height = welem.getSize().getHeight();
        int width = welem.getSize().getWidth();
        int yStep = height / 4;
        int beginX = (2 * startX + width) / 2;
        int beginY = startY + yStep;

        //手勢(shì)密碼設(shè)置
        logger.info("開(kāi)始設(shè)置手勢(shì)密碼叭披,中間垂直直線 上->下");
        TouchAction touchAction1 = new TouchAction(driver);
        touchAction1.press(beginX,beginY).moveTo(0,yStep).moveTo(0,yStep).release().perform();
        Toolkit.wait(1);
        logger.info("再次設(shè)置手勢(shì)密碼寥殖,中間垂直直線 上->下");
        touchAction1.press(beginX,beginY).moveTo(0,yStep).moveTo(0,yStep).release().perform();
        logger.info("手勢(shì)密碼設(shè)置完畢");
    }

https://testerhome.com/topics/5650

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市涩蜘,隨后出現(xiàn)的幾起案子嚼贡,更是在濱河造成了極大的恐慌,老刑警劉巖同诫,帶你破解...
    沈念sama閱讀 222,729評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件粤策,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡误窖,警方通過(guò)查閱死者的電腦和手機(jī)叮盘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,226評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)霹俺,“玉大人柔吼,你說(shuō)我怎么就攤上這事”螅” “怎么了愈魏?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,461評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我培漏,道長(zhǎng)溪厘,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,135評(píng)論 1 300
  • 正文 為了忘掉前任北苟,我火速辦了婚禮桩匪,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘友鼻。我一直安慰自己傻昙,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,130評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布彩扔。 她就那樣靜靜地躺著妆档,像睡著了一般。 火紅的嫁衣襯著肌膚如雪虫碉。 梳的紋絲不亂的頭發(fā)上贾惦,一...
    開(kāi)封第一講書(shū)人閱讀 52,736評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音敦捧,去河邊找鬼须板。 笑死,一個(gè)胖子當(dāng)著我的面吹牛兢卵,可吹牛的內(nèi)容都是我干的习瑰。 我是一名探鬼主播,決...
    沈念sama閱讀 41,179評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼秽荤,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼甜奄!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起窃款,我...
    開(kāi)封第一講書(shū)人閱讀 40,124評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤课兄,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后晨继,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體烟阐,經(jīng)...
    沈念sama閱讀 46,657評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,723評(píng)論 3 342
  • 正文 我和宋清朗相戀三年紊扬,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了曲饱。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,872評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡珠月,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出楔敌,到底是詐尸還是另有隱情啤挎,我是刑警寧澤,帶...
    沈念sama閱讀 36,533評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站庆聘,受9級(jí)特大地震影響胜臊,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜伙判,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,213評(píng)論 3 336
  • 文/蒙蒙 一象对、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧宴抚,春花似錦勒魔、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,700評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至常潮,卻和暖如春弟胀,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背喊式。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,819評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工孵户, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人岔留。 一個(gè)月前我還...
    沈念sama閱讀 49,304評(píng)論 3 379
  • 正文 我出身青樓夏哭,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親贸诚。 傳聞我的和親對(duì)象是個(gè)殘疾皇子方庭,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,876評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,331評(píng)論 25 707
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)、插件酱固、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,124評(píng)論 4 61
  • 上文已經(jīng)提到了HTTP/2主要利用多路復(fù)用傳輸械念,頭部壓縮,服務(wù)端推送运悲,可以減少網(wǎng)絡(luò)延遲對(duì)性能帶來(lái)的影響龄减,優(yōu)化首次訪...
    dotview閱讀 1,739評(píng)論 0 1
  • 有個(gè)美國(guó)小孩問(wèn)他的爸爸:咱家有錢(qián)嗎?爸爸回答他:我有錢(qián),你沒(méi)有磁餐。我的錢(qián)是我自己努力奮斗得來(lái)的违崇,將來(lái)你也可以通過(guò)你的...
    731912ad5985閱讀 253評(píng)論 0 1
  • 放著 就忘記了 不是故意的 天冷了 想起火塘 夜黑了 想起了燈光 可是 我好像忘記了什麼 把某一樣 原本屬於我的 ...
    蔡振源閱讀 235評(píng)論 0 1