appium+python解锁应用手势密码

appium+python解锁应用手势密码

测试用到滑动设置、解锁手势密码的动作,今天尝试去做了一下。
如下图手势密码页面:
手势密码页面
可以看到通过UIAutomatorViewer找不到具体的source_id,每个手势点是一个view,不同与imageView等,这个手势点的圈是每次运行生成的,就算找到id,每次的id也不会一致,想了两种办法去尝试做。

  • 通过触摸多点坐标进行解锁

虽然不是个好办法,暂且这样试一下。抓到每个手势点的起始坐标点,然后计算单个view(此处是正方形)的边长的一半,然后起点坐标x,y各加上这个一半边长就是每个手势点中心位置坐标,计算出这个后,就可以根据每个点去计算需要触摸点的坐标。
通过TouchAction的press()、move_to()等可以完成绘制。

#python

from appium.webdriver.common.touch_action import TouchAction
TouchAction(self.driver).press(x=228,y=647).move_to(x=228,y=647).wait(100).move_to(x=812,y=647).wait(100).move_to(x=812,y=940).wait(100).move_to(x=812,y=1241).release().perform()

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

  • 通过class_name抓到各个view,然后通过list绘制手势

这样的话就不会因为手机分辨率的不同而出错了。

#python
from appium.webdriver.common.touch_action import TouchAction

#通过class_name获取view的list
list_pwd = self.driver.find_elements_by_class_name("android.view.View")

TouchAction(self.driver).press(list_pwd[0]).move_to(list_pwd[0]).move_to(list_pwd[2]).wait(100).move_to(list_pwd[5]).release().perform()

#用list的时候注意下标越界

效果如下(录了几遍还是这样…凑合着看了):
不用描述了

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值