报道~
def tap_el(self, element, times: int):
"""
单击某个控件N次
:param element: 要单击的控件
:param times: 要单击的次数
:return:
"""
def _center_rect(r):
# center_x = r['x'] + r['width'] / 2.0
# center_y = r['y'] + r['height'] / 2.0
center_x = r['width'] / 2.0
center_y = r['height'] / 2.0
return center_x, center_y
rect = element.rect
# HTNone 的设计缺陷导致不能准确的识别有效元素
# 后期可能去掉HTNone
if isinstance(rect, bool):
return
action = TouchAction(self)
center = _center_rect(element.rect)
action.tap(element=element,
x=center[0],
y=center[1],
count=times).perform()
iOS 目前是没有问题的,但是 Android 还有问题
def tap_el(self, element, times: int):
"""
单击某个控件N次
:param element: 要单击的控件
:param times: 要单击的次数
:return:
"""
def _center_rect(r):
# center_x = r['x'] + r['width'] / 2.0
# center_y = r['y'] + r['height'] / 2.0
center_x = r['width'] / 2.0
center_y = r['height'] / 2.0
return center_x, center_y
rect = element.rect
# HTNone 的设计缺陷导致不能准确的识别有效元素
# 后期可能去掉HTNone
if isinstance(rect, bool):
return
action = TouchAction(self)
center = _center_rect(element.rect)
action.tap(element=element,
x=center[0],
y=center[1],
count=times).perform()
Appium 有现成的点击方案,(iOS 没有问题, Android 有问题)
def tap_el(self, element, times: int):
"""
单击某个控件N次
:param element: 要单击的控件
:param times: 要单击的次数
:return:
"""
def _center_rect(r):
# center_x = r['x'] + r['width'] / 2.0
# center_y = r['y'] + r['height'] / 2.0
center_x = r['width'] / 2.0
center_y = r['height'] / 2.0
return center_x, center_y
rect = element.rect
# HTNone 的设计缺陷导致不能准确的识别有效元素
# 后期可能去掉HTNone
if isinstance(rect, bool):
return
action = TouchAction(self)
center = _center_rect(element.rect)
action.tap(element=element,
x=center[0],
y=center[1],
count=times).perform()
单纯的过来点个赞
def long_press(self, element, duration):
def center_rect(r):
center_x = r['x'] + r['width'] / 2.0
center_y = r['y'] + r['height'] / 2.0
return center_x, center_y
duration = duration * 10000
center = center_rect(element.rect)
self.driver.tap([center], duration=duration)
尝试了以上所有的方法, 发现一个本质的错误, 点击位置在元素的左上角,所以导致长按等操作无法触发。
将其改为中心后,问题解决
还在百度吗? 约个饭啊