最近因为工作原因,在看一个app自动化框架airtest,然后发现其中采用的poco双击功能不可用。网上的说法就是没有实现这个接口,至于为什么我也不知道。
然后看了下源码,发现其实比较简单调用的是touch,所以只需要实现该方法就好了,其功能和click一样,就是调用touch的时候,加参数times=2即可。
修改之前先做备份保存,然后只需要修改四个文件。
1在自己所安装的python文件夹中找到Lib\site-packages\poco\proxy.py 文件添加代码
def double_click(self, focus=None, sleep_interval=None):
focus = focus or self._focus or 'center'
pos_in_percentage = self.get_position(focus)
self.poco.pre_action('double_click', self, pos_in_percentage)
ret = self.poco.double_click(pos_in_percentage)
if sleep_interval:
time.sleep(sleep_interval)
else:
self.poco.wait_stable()
self.poco.post_action('double_click', self, pos_in_percentage)
return ret
2在 Lib\site-packages\poco\pocofw.py 文件中添加
def double_click(self, pos):
if not (0 <= pos[0] <= 1) or not (0 <= pos[1] <= 1):
raise InvalidOperationException('Click position out of screen. pos={}'.format(repr(pos)))
ret = self.agent.input.double_click(pos[0], pos[1])
self.wait_stable()
return ret
3在\Lib\site-packages\poco\utils\airtest\input.py 文件中添加
def double_click(self, x, y):
pos = self.get_target_pos(x, y)
touch(pos, duration=self.default_touch_down_duration,times=2)
4在Python310\Lib\site-packages\poco\pocofw.py
def double_click(self, x, y):
raise NotImplementedError
然后调用poco的double_click()方法就可以了,其实可以看出,touch,方法多了个参数。