使用appium实现放大缩小操作

上回设置图案密码为单手滑动,方法缩小一般需要两手指一起操作实现放大缩小

原理:

放大:两手指从中间往外扩大,方向随意

缩小:从外侧往中间收缩。

 

代码实现:

也是按下某个点,滑动,松手,操作生效。只不过为两个滑动点

from appium.webdriver.common.multi_action import MultiAction

# 有一个方法可以添加多个对象,然后执行
    def add(self, *touch_actions: 'TouchAction') -> None:
        """Add TouchAction objects to the MultiAction, to be performed later.

        Args:
            touch_actions: one or more TouchAction objects describing a chain of actions to be performed by one finger

        Usage:
            | 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)

        Returns:
            `MultiAction`: Self instance
        """
        for touch_action in touch_actions:
            if self._touch_actions is None:
                self._touch_actions = []

            self._touch_actions.append(copy.copy(touch_action))

所以放大和缩小的方法分别可以写为

def fangda(driver: Remote):
    """放大操作"""
    width = driver.get_window_size()['width']
    height = driver.get_window_size()['height']
    # 获取屏幕的比例,分局比例放大 

    el1 = TouchAction(driver)
    el2 = TouchAction(driver)

    action = MultiAction(driver)
    el1.press(x=width * 0.5, y=height * 0.5).wait(200).move_to(x=width * 0.3, y=height * 0.3).wait(200).release()
    el2.press(x=width * 0.5, y=height * 0.5).wait(200).move_to(x=width * 0.7, y=height * 0.7).wait(200).release()
    action.add(el1, el2)
    action.perform()

def suoxiao(driver: Remote):
    """缩小"""
    width = driver.get_window_size()['width']
    height = driver.get_window_size()['height']

    el1 = TouchAction(driver)
    el2 = TouchAction(driver)

    action = MultiAction(driver)
    el1 .press(x=width * 0.4, y=height * 0.4).wait(200).move_to(x=width * 0.5, y=height * 0.5).wait(200).release()
    el2 .press(x=width * 0.6, y=height * 0.6).wait(200).move_to(x=width * 0.5, y=height * 0.5).wait(200).release()
    action.add(el1 , el2 )
    action.perform()

以下以地图app示例:

import time
from appium.webdriver import Remote
from appium.webdriver.common.touch_action import TouchAction
from appium.webdriver.common.multi_action import MultiAction


caps = {
    "platformName": "Android",
    "deviceName": "127.0.0.1:62025",
    "appPackage": "com.autonavi.minimap",
    "appActivity": "com.autonavi.map.activity.NewMapActivity",
    "noReset": True  # 防止app重复初始化 
}
driver = Remote(desired_capabilities=caps,
                command_executor='http://127.0.0.1:4723/wd/hub')


def fangda(driver: Remote):
    """放大操作"""
    width = driver.get_window_size()['width']
    height = driver.get_window_size()['height']

    el1 = TouchAction(driver)
    el2 = TouchAction(driver)

    action = MultiAction(driver)
    el1.press(x=width * 0.5, y=height * 0.5).wait(200).move_to(x=width * 0.3, y=height * 0.3).wait(200).release()
    el2.press(x=width * 0.5, y=height * 0.5).wait(200).move_to(x=width * 0.7, y=height * 0.7).wait(200).release()
    action.add(el1, el2)
    action.perform()


def suoxiao(driver: Remote):
    """缩小"""
    width = driver.get_window_size()['width']
    height = driver.get_window_size()['height']

    el1 = TouchAction(driver)
    el2 = TouchAction(driver)

    action = MultiAction(driver)
    el1.press(x=width * 0.4, y=height * 0.4).wait(200).move_to(x=width * 0.5, y=height * 0.5).wait(200).release()
    el2.press(x=width * 0.6, y=height * 0.6).wait(200).move_to(x=width * 0.5, y=height * 0.5).wait(200).release()
    action.add(el1, el2)
    action.perform()


time.sleep(3)
print("放大开始")
fangda(driver=driver)
print("放大完成")

# time.sleep(2)
# print("缩小开始")
# suoxiao(driver=driver)
# time.sleep(2)
# print("缩小完成")

driver.quit()

写在最后:

可以使用不同的app,如地图/图库/或者是支持放大缩小的页面等进行操作

等待时间可以自由设置,根据机子的反应来调整,

本想使用旧手机魅族mx6,奈何内存不够(哭)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值