博客
关于我
python-appium实现多点触控,多点操作
阅读量:280 次
发布时间:2019-03-01

本文共 1737 字,大约阅读时间需要 5 分钟。

使用Appium实现多点触控和多点操作

在实际开发过程中,我们有时需要对手机屏幕进行多点触控操作,这在某些场景下尤为重要。例如,为了验证某些概率性问题,需要确保多次截图操作后的结果具有预期性。在实际应用中,三指截图是一个常见的操作,但需要注意的是,传统的双指截图可能会导致屏幕截图被系统或应用自动保存,从而影响实验结果。

本文将介绍如何使用Appium框架,通过多点触控实现三指下滑截图的功能,并确保截图不被系统或应用自动保存。

首先,我们需要配置Appium的环境。以下是基本的配置代码:

from appium import webdriverfrom appium.webdriver.common.touch_action import TouchActionfrom appium.webdriver.common.multi_action import MultiActiondesired_caps = {}desired_caps['platformName'] = 'Android'desired_caps['deviceName'] = "aa"desired_caps['platformVersion'] = "9"desired_caps['appPackage'] = "com.google.android.apps.messaging"desired_caps['appActivity'] = "com.google.android.apps.messaging.ui.ConversationListActivity"desired_caps['noReset'] = 'true'driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

接下来,我们需要编写截图函数。为了实现三指下滑的操作,我们可以使用TouchAction和MultiAction来实现多点触控。

def scr():    action1 = TouchAction(driver)  # 第一个手势    action2 = TouchAction(driver)  # 第二个手势    action3 = TouchAction(driver)  # 第三个手势    zoom_action = MultiAction(driver)        action1.press(x=300, y=600).move_to(x=300, y=750).wait(200).release()      action2.press(x=400, y=600).move_to(x=400, y=750).wait(200).release()      action3.press(x=500, y=600).move_to(x=500, y=750).wait(200).release()          zoom_action.add(action1, action2, action3)  # 加载多个手势到一个多点动作中    time.sleep(2)  # 等待加载完成    print("第%s次截图" % i)  # 输出日志    zoom_action.perform()  # 执行动作

在上述代码中,我们通过创建三个TouchAction对象,分别对应三个手指的触控点。然后,将这些手势添加到一个MultiAction对象中,最后执行多点触控操作。通过这种方式,我们可以实现三指下滑的操作。

在实际使用过程中,需要注意以下几点:

  • 确保设备已经连接到同一局域网,并且端口号是正确的(通常是4723)
  • 确保应用程序已经在目标设备上启动,并且没有被锁定
  • 如果遇到手势识别不准确的问题,可以调整手势的坐标值,确保每个手势的位置和路径都能准确识别
  • 如果截图结果不符合预期,需要检查手势的移动路径和释放点是否正确
  • 通过上述方法,我们可以实现三指下滑截图的功能,同时确保截图不会被系统或应用自动保存。这样可以为需要多点触控操作的场景提供一个可靠的解决方案。

    转载地址:http://sino.baihongyu.com/

    你可能感兴趣的文章
    nmon_x86_64_centos7工具如何使用
    查看>>
    NN&DL4.1 Deep L-layer neural network简介
    查看>>
    NN&DL4.3 Getting your matrix dimensions right
    查看>>
    NN&DL4.7 Parameters vs Hyperparameters
    查看>>
    NN&DL4.8 What does this have to do with the brain?
    查看>>
    nnU-Net 终极指南
    查看>>
    No 'Access-Control-Allow-Origin' header is present on the requested resource.
    查看>>
    NO 157 去掉禅道访问地址中的zentao
    查看>>
    no available service ‘default‘ found, please make sure registry config corre seata
    查看>>
    No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
    查看>>
    no connection could be made because the target machine actively refused it.问题解决
    查看>>
    No Datastore Session bound to thread, and configuration does not allow creation of non-transactional
    查看>>
    No fallbackFactory instance of type class com.ruoyi---SpringCloud Alibaba_若依微服务框架改造---工作笔记005
    查看>>
    No Feign Client for loadBalancing defined. Did you forget to include spring-cloud-starter-loadbalanc
    查看>>
    No mapping found for HTTP request with URI [/...] in DispatcherServlet with name ...的解决方法
    查看>>
    No mapping found for HTTP request with URI [/logout.do] in DispatcherServlet with name 'springmvc'
    查看>>
    No module named 'crispy_forms'等使用pycharm开发
    查看>>
    No module named cv2
    查看>>
    No module named tensorboard.main在安装tensorboardX的时候遇到的问题
    查看>>
    No module named ‘MySQLdb‘错误解决No module named ‘MySQLdb‘错误解决
    查看>>