上回设置图案密码为单手滑动,方法缩小一般需要两手指一起操作实现放大缩小
原理:
放大:两手指从中间往外扩大,方向随意
缩小:从外侧往中间收缩。
代码实现:
也是按下某个点,滑动,松手,操作生效。只不过为两个滑动点
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,奈何内存不够(哭)