appium+python解锁应用手势密码

appium+python解锁应用手势密码

测试用到滑动设置、解锁手势密码的动作,今天尝试去做了一下。
如下图手势密码页面:
appium+python解锁应用手势密码_第1张图片
可以看到通过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的时候注意下标越界

效果如下(录了几遍还是这样…凑合着看了):
appium+python解锁应用手势密码_第2张图片

你可能感兴趣的:(appium,python测试)