zoukankan      html  css  js  c++  java
  • python+Appium自动化:MultiAction多点触控

    MultiAction

    MultiAction 是多点触控的类,常用于模拟用户多点操作。

    主要包含这add()还有perform()两个方法,模拟多点触控,需要导入TouchAction还有MultiAction两个模块。

    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对象,描述一个手指要执行的动作链

    例子:
    action1=TouchAction(driver)
    action1.press(el1).move_to(el2).release()

    action2=TouchAction(driver)

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

    MultiAction(driver).add(action1, action2)

    执行:

    perform(self) 执行存储在对象中的操作
     
    action1=TouchAction(driver)
    action1.press(el1).move_to(el2).release()

    action2=TouchAction(driver)

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

    MultiAction(driver).add(action1, action2).perform()

     

    场景:百度地图的缩放

     代码:

    # -*- coding: utf-8 -*-#
    from appium import webdriver
    import time
    from appium.webdriver.common.touch_action import TouchAction
    from appium.webdriver.common.multi_action import MultiAction
    
    desired_caps = {
                   "platformName": "Android",
                   "platformVersion": "5.1",
                   "deviceName": "U4KF9HSK99999999",
                   "appPackage": "com.baidu.BaiduMap",
                   "appActivity": "com.baidu.baidumaps.MapsActivity",
                   "unicodeKeyboard":True,
                   "resetKeyboard":True,
                   "noReset": True
                    }
    driver = webdriver.Remote("http://localhost:4723/wd/hub",desired_caps)
    driver.implicitly_wait(5)
    #获取窗口尺寸
    
    size=driver.get_window_size()
    print(size)
    x=size['width']
    y=size['height']
    time.sleep(2)
    #缩放
    def pinch():
        action1=TouchAction(driver)
        action2=TouchAction(driver)
        mul_action=MultiAction(driver)
        action1.press(x=x*0.2,y=y*0.2).wait(1000).move_to(x=x*0.2,y=y*0.2).wait(1000).release()
        action2.press(x=x*0.8,y=y*0.8).wait(1000).move_to(x=-x*0.2,y=-y*0.2).wait(1000).release()
        #执行
        print("-----start pinch-----")
        mul_action.add(action1,action2)
        mul_action.perform()
    #放大
    def zoom():
        action1=TouchAction(driver)
        action2=TouchAction(driver)
        mul_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.2,y=y*0.2).wait(1000).release()
        #执行
        print("-----start zoom-----")
        mul_action.add(action1,action2)
        mul_action.perform()
    
    if __name__=="__main__":
    
        for i in range(2):
            time.sleep(2)
            pinch()
    
        for i in range(2):
            time.sleep(2)
            zoom()
    move_to是计算手机的偏移量,用负数控制滑动方向。
     
     
     
    转载请附上原文链接。
  • 相关阅读:
    phalcon——HTTP 请求
    phalcon——闪存消息
    phalcon——验证
    Java 字符串分隔 split
    Eclipse "R cannot be resolved"问题
    Android CountDownTimer 类实现倒计时
    Eclipse 打开时“发现了以元素'd:skin'”开头的无效内容。此处不应含有子元素
    Android Studio 设置/更改 SDK 路径
    Android 开发使用自定义字体
    Android Studio "ADB not responding"
  • 原文地址:https://www.cnblogs.com/bugbreak/p/12072128.html
Copyright © 2011-2022 走看看