51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 4206|回复: 5
打印 上一主题 下一主题

[Appium] 求助一个自动化手势密码的设置方案appium+Python的

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2016-9-8 20:02:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
当前的问题是:手势密码不是单个按钮的连接,我试着用TouchAction(self.driver).press(x,y).move_to(x,y)的方式尝试了,就是不行,具体代码如下:
TouchAction(self.driver).press(x=269,y=463).move_to(x=269,y=463).wait(ms=800).move_to(x=269,y=463).wait(800).move_to(x=269,y=763).wait(800).move_to(x=417,y=763).release().perform()

不知道为什么老提示没有获取到坐标?
但是,我自己调试的时候,用TouchAction(self.driver).press(x ,y)去调用上面的move_to(269,763)单个坐标,这个逐个试了一下,都可以看到显示了起始点是正确的,急

运行提示信息是:
Traceback (most recent call last):
  File "F:\testApp\dianrong\test_login.py", line 35, in test1_login
    TouchAction(self.driver).press(x=269,y=463).move_to(x=269,y=463).wait(ms=8000).move_to(x=269,y=612).wait(8000).move_to(x=269,y=763).wait(1000).move_to(x=417,y=763).release().perform()
  File "D:\python\lib\site-packages\appium\webdriver\common\touch_action.py", line 94, in perform
    self._driver.execute(Command.TOUCH_ACTION, params)
  File "D:\python\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 236, in execute
    self.error_handler.check_response(response)
  File "D:\python\lib\site-packages\appium\webdriver\errorhandler.py", line 29, in check_response
    raise wde
WebDriverException: Message: The coordinates provided to an interactions operation are invalid.

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

  • TA的每日心情

    2024-7-8 09:00
  • 签到天数: 943 天

    连续签到: 1 天

    [LV.10]测试总司令

    2#
    发表于 2016-9-9 10:49:44 | 只看该作者
    额好复杂   找个专业的群去问一下吧 解决的快些 完事记得分享
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3#
     楼主| 发表于 2016-9-10 14:55:49 | 只看该作者

    实际代码执行的效果如下

    本帖最后由 1559564918 于 2016-9-10 15:26 编辑

    TouchAction(self.driver).press(x=125,y=468).move_to(x=0,y=90).wait(ms=800).move_to(x=0,y=180).wait(800).move_to(x=90,y=0).release().perform()
    当然可以根据self.driver.find_elment_by_id("手势密码元素").size
    获取到元素的坐标大小,再根据坐标去算出每个点之间的距离,就比较自动画一点,我这里的坐标是,手动算出来的,所以直接填写具体的数值,这样对不同屏幕大小的手机可能不兼容。后期代码优化的时候,再优化。。。


    文采不好,有哪里说的不对的话,或不理解的话,可以指正!!!

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

    x
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4#
     楼主| 发表于 2016-9-10 15:17:12 | 只看该作者
    调式了半天,终于明白怎么回事了。
    之前是我对move_to(x , y)的理解错误,刚开始我以为move_to(x , y)偏移量是以手机屏幕为准的坐标。实际上move_to(x,y ) 移动偏移量是根据按下手机屏幕的位置为准,也就是press(x, y)的位置,在没有release()之前都会根据press()的坐标上移动,以下以我修改后的代码为例:
    TouchAction(self.driver).press(x=125,y=468).move_to(x=0,y=90).wait(ms=800).move_to(x=0,y=180).wait(800).move_to(x=90,y=0).release().perform()
    sleep(5)
    初始坐标位置为:press(x=125,y=468),第一个move_to(x=0 ,y=90),表示在(x=125,y=468)这个位置上向下移动90分辨率,也就是连接第二个点。而第二个move_to(x=0,y=180),意思也差不多,因为,这个时候我还没有release()也就是没有松开手,所以第三个点还是以(x=125,y=468)为起点,所以再向下画的时候,在原来的y轴上在加90分辨率就是move_to(x=0,y=180)。而第四个点是横向移动的,也就是x轴的移动,所以第四个点是move_to(x=90,y=0),表示向x轴移动90分辨率

    评分

    参与人数 1测试积点 +10 收起 理由
    lsekfe + 10 积极回复获得测试积点10

    查看全部评分

    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5#
    发表于 2017-4-8 11:53:15 | 只看该作者
    1559564918 发表于 2016-9-10 15:17
    调式了半天,终于明白怎么回事了。
    之前是我对move_to(x , y)的理解错误,刚开始我以为move_to(x , y)偏移 ...

    太感谢啦!!!被网上各种教程坑了好久,move_to是增量的方法,网上好多都是moveto指定的点,真不知道他们是怎么跑通的。真的太感谢啦!!!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6#
    发表于 2017-4-8 11:53:24 | 只看该作者
    1559564918 发表于 2016-9-10 15:17
    调式了半天,终于明白怎么回事了。
    之前是我对move_to(x , y)的理解错误,刚开始我以为move_to(x , y)偏移 ...

    太感谢啦!!!被网上各种教程坑了好久,move_to是增量的方法,网上好多都是moveto指定的点,真不知道他们是怎么跑通的。真的太感谢啦!!!
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-22 08:08 , Processed in 0.070777 second(s), 24 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表