问题:
- 使用此代码在安卓原生的相机中不能放大和缩小倍率,我打开过指针器,能看到滑动已经生效
- 这个代码在百度地图app中是可以放大和缩小倍率的
- 请问这个是什么原因?
- 我有两点猜测:
1、move_to方法滑动的过程太短,好像此方法没法控制duration
2、滑动的线为直线,原生相机有这方面检测?
求解惑。顺便告诉我该如何实现相机中倍率的切换?有些相机并没有倍率切换的滚动条,只能模拟多指操作进行滑动切换。
代码:
action1 = MyTouchAction(driver)
action2 = MyTouchAction(driver)
action1.press(x=x * 0.47, y=y * 0.47).wait(200).move_to(x=x * 0.3, y=y * 0.3).wait(200).release()
action2.press(x=x * 0.52, y=y * 0.52).wait(200).move_to(x=x * 0.7, y=y * 0.7).wait(200).release()
multi_action = MultiAction(driver)
multi_action.add(action1, action2)
multi_action.perform()
代码逻辑有点错了吧,参考
from appium.webdriver.common.multi_action import MultiAction
from appium.webdriver.common.touch_action import TouchAction
imageView=self.driver.find_element_by_id('xxxx/photo_view')
#获取屏幕高和宽
srcHeight=self.driver.get_window_size()['height']
srcWidth=self.driver.get_window_size()['width']
#设置MultiAction,可以多点触控
multiAction=MultiAction(self.driver)
#设置两个“单点”动作
t1=TouchAction(self.driver)
t2=TouchAction(self.driver)
#分成两点按住相片0.25秒(如果中间不等,可能是程序点太快什么的,会退出浏览模式或者不起放大的作用);X轴固定,从屏幕中间向上下两边移动
#imageView代表图片或者相机的定位
t1.long_press(imageView,srcWidth/2,srcHeight/2 - 100).wait(250).move_to(imageView,srcWidth/2,srcHeight/2-130).release()
t2.long_press(imageView,srcWidth/2,srcHeight/2 + 100).wait(250).move_to(imageView,srcWidth/2,srcHeight/2+125).release()
#只能一个一个add()分别加上去
multiAction.add(t1)
multiAction.add(t2)
multiAction.perform()
你说的这个帖子我也看过了的,逻辑是一样的,选择两个点进行move_to操作,可是在相机中不能实现,我在相册中也试过,也实现不了,不过在百度地图中是可以的
size = driver.get_window_size()
x = size.get('width')
y = size.get('height')
# driver.find_element_by_id("com.android.camera:id/thumbnail").click()
camera_view = driver.find_element_by_id("com.android.camera:id/afregions_view")
for i in range(3):
action1 = TouchAction(driver)
action2 = TouchAction(driver)
# action1.press(x=x * 0.47, y=y * 0.47).wait(200).move_to(x=x * 0.3, y=y * 0.3).wait(200).release()
# action2.press(x=x * 0.52, y=y * 0.52).wait(200).move_to(x=x * 0.7, y=y * 0.7).wait(200).release()
action1.long_press(x=x*0.4, y=y*0.4).wait(500).move_to(x=x*0.3, y=y*0.3).release()
action2.long_press(x=x*0.6, y=y*0.6).wait(500).move_to(x=x*0.7, y=y*0.7).release()
multi_action = MultiAction(driver)
multi_action.add(action1)
multi_action.add(action2)
multi_action.perform()
time.sleep(2)
# driver.get_screenshot_as_file("./aa.png")
time.sleep(5)
driver.quit()