关于appium+python TouchAction提示错误:The coordinates provided to an interactions operation are invalid

今天做自动化解锁9宫格,发现swipe不能满足需求,于是用TouchAction去实现手势滑动,这里先给出我写的代码:

TouchAction(self.driver).press(x=299, y=744).wait(100)\
    .move_to(x=483, y=0).wait(100)\
    .move_to(x=-483, y=501).wait(100)\
    .move_to(x=483, y=0).wait(100).release().perform()

 
  
根据UIAutomatorViewer抓到的坐标,我的坐标滑动需求是(299,744)—>(782,744)—>(299,1245)—>(782,1245)
这个走势也就是一个“Z”字形的解锁路线。
这里给出move_to的代码:
def move_to(self, el=None, x=None, y=None):
    """Move the pointer from the previous point to the element or point specified
    """
    self._add_action('moveTo', self._get_opts(el, x, y))

    return self
 
  
然后我执行我的代码之后还是报错:
The coordinates provided to an interactions operation are invalid.
提示说我的坐标无效,但是我确实填写的没有问题。然后我去翻看appium服务的log:
从log看出,前面的坐标操作都是没有问题的,“Z”字可以正常画出来,但是最后touchUp的时候失败了,居然识别

的是一个中间的偏移坐标值做touchUp,正好我这个偏移值还是负数,不在bounds里面,所以提示出错了。

这里先不讨论原因,我改动代码之后就OK了,我贴出改动后的代码:

TouchAction(self.driver).press(x=299, y=744).wait(100)\
    .move_to(x=483, y=0).wait(100)\
    .move_to(x=-483, y=501).wait(100)\
    .move_to(x=483, y=0).wait(100).release().wait(100).perform()

标红的地方就是改动点,我仅仅是在release()后面加了一个wait就保证了touchUp正常执行

就能正常在最后一个点touchUp。

具体原因我不在此详细分析,感兴趣的可以去分析appium底层是怎么执行的




你可能感兴趣的:(python自动化测试)