Appium+python自动化(二十八)- 滑呀滑,滑到奈何桥喝碗孟婆汤 – 高级滑动(超详解) – Python量化投资

Appium+python自动化(二十八)- 滑呀滑,滑到奈何桥喝碗孟婆汤 – 高级滑动(超详解)

简介  

  奈何桥上叹奈何,三生石前憾三生,彼岸花下非彼岸,奈何三生彼岸人。

  相传过了鬼门关便上一条路叫黄泉路,路上盛开着只见花,不见叶的彼岸花。花叶生生两不见,相念相惜永相失,路尽头有一条河叫忘川河,河上有一座桥叫奈何桥。走过奈何桥有一个土台叫望乡台。望乡台边有个亭子叫孟婆亭,有个叫孟婆的女人守候在那里,给每个经过的路人递上一碗孟婆汤。忘川河边有一块石头叫三生石。喝下孟婆汤让人忘了一切。三生石记载着前世今生来世。

  人死先到鬼门关,出了鬼门关,途经黄泉路,来到忘川河边,便是奈何桥。奈何桥上有孟婆,要过奈何桥,就要喝孟婆汤,不喝孟婆汤,就过不得奈何桥,过不得奈何桥,就不得投生转世。凡是喝过孟婆汤的人就会忘却今生今世所有的牵绊,了无牵挂地进入轮回道开始了下一世的轮回。

  孟婆汤又称忘情水或忘忧散,一喝便忘前世今生。阳间的每个人在这里都有自己的一只碗,碗里的孟婆汤,其实就是活着的人一生所流的泪。每个人活着的时候,都会落泪:因喜,因悲,因痛,因恨,因愁,因爱。孟婆将他们一滴一滴的泪收集起来,煎熬成汤,在他们离开人间,走上奈何桥头的时候,让他们喝下去,忘却活着时的爱恨情愁,干干净净,重新进入六道,或为仙,或为人,或为畜。不是每个人都会心甘情愿地喝下孟婆汤。

  因为这一生,总会有爱过的人不想忘却。孟婆会告诉他:你为她一生所流的泪都熬成了这碗汤,喝下它,就是喝下了你对她的爱。来的人眼中最后的一抹记忆便是他今生挚爱的人,喝下汤,眼里的人影慢慢淡去,眸子如初生婴儿般清彻。为了来生再见今生最爱,你可以不喝孟婆汤,那便须跳入忘川河,等上千年才能投胎。千年之中,你或许会看到桥上走过今生最爱的人,但是言语不能相通,你看得见她,她看不见你。

千年之中,你看见她走过一遍又一遍奈何桥,喝过一碗又一碗孟婆汤,你盼她不喝孟婆汤,又怕她受不得忘川河中千年煎熬之苦。千年之后若心念不灭,还能记得前生事,便可重入人间,去寻前生最爱的人。奈何桥边有块青石叫三生石,三生石记载着每个人的前世今生,石身上的字鲜红如血,最上面刻着四个大字“早登彼岸”。

  溜冰是香港目前流行的叫法,而国内则叫旱冰或轮滑,台湾称为溜冰,澳门则叫它做雪屐。不论叫法如何,其目的只是区别水冰地面或非水冰地面 (ICE SKATING)。然而在宏哥这宏哥把手机上的这种滑动称其为溜冰,咱也当一回文艺人。
今天做自动化设置手势密码9宫格,本以为发现swipe不能满足需求,于是用TouchAction去实现手势滑动。但是不是想象中的那么顺利。

  这篇文章写的特别的痛苦,写的死去活来,期间多次想放弃,但是最终坚持下来了,破茧成蝶,写的宏哥好像真的是奈何桥上走了一遭,。细心地小伙伴们或者童鞋们会发现宏哥已经好多天没有更新文章了。那是因为这篇文章中遇到了不少坑,耗费了大量时间,总的来说大约是两个晚上的时间,每晚上大约3到4个小时。下边慢慢的听宏哥给你一一道来。

高级溜冰的滑动

滑动操作一般是两点之间的滑动,这种滑动宏哥在这里称其为低级的溜冰滑动;就是宏哥上一节给小伙伴们分享的。然而实际使用过程中用户可能要进行一些多点连续滑动操作。如九宫格滑动操作,连续拖动图片移动等场景。那么这种高级绚丽的溜冰滑动在Appium中该如何模拟这类操作呢?下面听宏哥给你慢慢道来。

TouchAction

首先看一下官方文档

地址:https://seleniumhq.github.io/selenium/docs/api/py/webdriver/selenium.webdriver.common.touch_actions.html

Touch Action包含一些列操作,比如按压、长按、点击、移动、暂停。由着些不同操作可以组成一套动作。使用TochAction需要先导入对应的模块


from appium.webdriver.common.touch_action import TouchAction


按压

方法:press() 开始按压一个元素或坐标点(x,y)。通过手指按压手机屏幕的某个位置。 press也可以接收屏幕的坐标(x,y)。


press(self, el=None, x=None, y=None)

TouchAction(driver).press(x=0,y=308)


长按

方法:longPress() 开始按压一个元素或坐标点(x,y)。 相比press()方法,longPress()多了一个入参,既然长按,得有按的时间吧。duration以毫秒为单位。1000表示按一秒钟。其用法与press()方法相同。


long_press(self, el=None, x=None, y=None, duration=1000)


点击

方法:tap() 对一个元素或控件执行点击操作。用法参考press()。


tap(self, element=None, x=None, y=None, count=1)


移动

方法:move_to() 将指针从上一个点移动到指定的元素或点。


move_to(self, el=None, x=None, y=None)


注意:

移动到目位置有时是算绝对坐标点,有时是基于前面一个坐标点的偏移量,这个要结合具体App来实践。

暂停

方法:Wait()


wait(self, ms=0)


暂停脚本的执行,单位为毫秒。

释放

方法:release() 结束的行动取消屏幕上的指针。


release(self)


执行

方法:perform() 执行的操作发送到服务器的命令操作。


perform(self)


TouchAction实战——九宫格滑动操作

九宫格是一种比较常见的图案加密方式,目前很多App都支持设置图案锁,Android原生系统也支持设九宫格图案锁屏。那么我们该如何使用Appium进行滑动操作呢?

测试场景

安装启动随手记App 启动App后在密码设置选项中开启手机密码并滑动九宫格设置如下“Z”字形的图形密码。

测试环境

1.宏哥的系统环境是Windows 10版本 64位系统

 

2.宏哥的dk版本:”1.8.0_181″

3.宏哥的appium版本:1.4.16 

4.selenium:3.141.0

安装selenium:

输入指令pip install selenium

验证安装成功:pip show selenium

5.测试设备:Android 5.1.1 (不能低于5.0版本)

6.Python:3.7.2

命令:python -V  ,回车即可。

7.测试App:随手记Android app V9.7.1.5

想法与思路

  • 安装启动随手记APP
  • 代码实现点击“下一步”,向左滑动首页引导页面
  • 点击“开始随手记”进入首页页面
  • 点击“设置”按钮,向上滑动,找到“高级”按钮,点击进入
  • 点击“手势密码”,开始设置手势密码(高级滑动)

代码实现

(1)安装启动随手记

(2)代码实现点击“下一步”,向左滑动首页引导页面

(3)点击“开始随手记”进入首页页面

(4)点击“设置”按钮,向上滑动,找到“高级”按钮,点击进入

(5)点击“手势密码”,开始设置手势密码,进行解锁(高级滑动)

这个地方move_to到了按下的这个坐标点,是因为不这样的话实际结果忽略掉了第一个按下的点。release()释放,perform()执行。

代码运行结果

运行过程appium和夜神模拟器