zoukankan      html  css  js  c++  java
  • 多点触控 地图缩放

    使用地图App中,我们经常需要对界面进行缩放操作来更加便利的查看位置。那么在Appium中怎样去模拟这类操作呢?

    MultiAction

    MultiAction 是多点触控的类,可以模拟用户多点操作。主要包含 add() 和 perform() 两个方法, MultiAction可以结合前面所学的 ActionTouch可以模拟出用户的多个手指滑动的操作效果;

    from appium.webdriver.common.multi_action import MultiAction

    from appium.webdriver.common.touch_action import TouchAction

    加载:

    方法add(self, *touch_actions)将TouchAction对象添加到MultiAction中,稍后再执行。

    参数:
    • touch_actions - 一个或多个TouchAction对象,描述一个手指要执行的动作链
    用法

    a1 = TouchAction(driver)

    a1.press(el1).move_to(el2).release()

     

    a2 = TouchAction(driver)

    a2.press(el2).move_to(el1).release()

     

    MultiAction(driver).add(a1, a2)

    执行

    perform(self) 执行存储在对象中的操作。

    用法

    a1 = TouchAction(driver)

    a1.press(el1).move_to(el2).release()

     

    a2 = TouchAction(driver)

    a2.press(el2).move_to(el1).release()

     

    MultiAction(driver).add(a1, a2).perform()

    Ps:是不是有点类似Python里面的多线程和多进程的使用。

    多点触控操作实践——地图App缩放

    测试场景

    安装启动百度地图Android app 进入地图后分别进行放大缩小操作

    测试环境

    • Appium 1.7.2
    • Win10 64bit
    • 夜神模拟器 Android5.1.1
    • 百度地图Android版 V10.6.5

    滑动原理图解

     

    代码实现

    multi_action.py

    from appium import webdriver

    from time import sleep

    from appium.webdriver.common.touch_action import TouchAction

    from appium.webdriver.common.multi_action import MultiAction

     

     

    desired_caps={}

    desired_caps['platformName']='Android'

    desired_caps['deviceName']='127.0.0.1:62025'

    desired_caps['platforVersion']='5.1.1'

     

    desired_caps['app']=r'C:UsersShuqingDesktopcom.baidu.BaiduMap.apk'

    desired_caps['appPackage']='com.baidu.BaiduMap'

    desired_caps['appActivity']='com.baidu.baidumaps.WelcomeScreen'

     

    driver=webdriver.Remote('http://localhost:4723/wd/hub',desired_caps)

    driver.implicitly_wait(5)

     

    driver.find_element_by_id('com.baidu.BaiduMap:id/dj2').click()

    driver.find_element_by_id('com.baidu.BaiduMap:id/byo').click()

     

    x=driver.get_window_size()['width']

    y=driver.get_window_size()['height']

     

    def pinch():

        action1=TouchAction(driver)

        action2=TouchAction(driver)

        zoom_action=MultiAction(driver)

     

     

        action1.press(x=x*0.2,y=y*0.2).wait(1000).move_to(x=x*0.4,y=y*0.4).wait(1000).release()

        action2.press(x=x*0.8,y=y*0.8).wait(1000).move_to(x=x*0.6,y=y*0.6).wait(1000).release()

     

        print('start pinch...')

        zoom_action.add(action1,action2)

        zoom_action.perform()

     

    def zoom():

        action1=TouchAction(driver)

        action2=TouchAction(driver)

        zoom_action=MultiAction(driver)

     

     

        action1.press(x=x*0.4,y=y*0.4).wait(1000).move_to(x=x*0.2,y=y*0.2).wait(1000).release()

        action2.press(x=x*0.6,y=y*0.6).wait(1000).move_to(x=x*0.8,y=y*0.8).wait(1000).release()

     

        print('start zoom...')

        zoom_action.add(action1,action2)

        zoom_action.perform()

     

    if __name__ == '__main__':

        for i in range(3):

            pinch()

     

        for i in range(3):

            zoom()

    参考资料

    http://appium.io/docs/cn/writing-running-appium/touch-actions/

    https://stackoverflow.com/questions/38565116/zoom-action-in-android-using-appium-python-client

  • 相关阅读:
    NoteExpress 自定义参考文献输出样式
    Gabor学习笔记
    智能电视,谁的电视?谁的智能?
    智能手表的未来:独立还是附属,这是个问题!
    罗技Setpoint控制酷狗等第三方播放器
    Python中pip的SSL异常
    解决ArcPy脚本工具中文乱码问题
    文件夹exe病毒的清理
    WinRAR解压提示压缩包损坏
    网络数据集不能重命名
  • 原文地址:https://www.cnblogs.com/xuzhongtao/p/9723228.html
Copyright © 2011-2022 走看看