wait_and_match(click,daemon) — 不断进行截图,并匹配图片,匹配成功后进行点击,但是这个方法一般不单独使用而是被下面两个方法所调用。
click: boolen。 是否进行点击,默认是
daemon: boolen。是否作为守护进程调用,默认为否
#不断刷新屏幕的截图,进行图像匹配,主要用作守护进程
def wait_and_match(self,click,daemon=False):
while True:
self.full_screen = self.full_pic()
self.target_screen = self.cut_screen()
self.target_click_point = self.pic_match()
self.point_x, self.point_y = self.main()
is_match = self.check_and_click(click=click,new_process=True)
if is_match:
print('【%s】完成匹配,结束进程...'% multiprocessing.current_process().name)
if not daemon:
break
wait_and_match_process(timeout,click) — 开启子进程调用wait_and_match。等待目标出现,进行点击,然后退出。当等待timeout秒后,还未匹配到目标,退出。
# 开启子进程执行,等待元素的出现然后执行操作,返回True。超时关闭子进程返回结果False
# 注意调用时由于这个方法是创建新的进程,所以,需要在main中执行
def wait_and_match_process(self,timeout=20,click=True):
result = False
wait_process = multiprocessing.Process(target=self.wait_and_match,args=(click,),name="等待进程")
st = time.time()
wait_process.start()
while time.time()-st<=timeout:
print(time.time()-st)
time.sleep(1)
if not wait_process.is_alive():
result = True
break
if wait_process.is_alive():
wait_process.terminate()
raise KeyError('【%s】没有正确的匹配%s,进程退出...'% (wait_process.name,self._pic))
wait_process.join()
return result
match_daemon() — 开启守护进程,不断匹配目标图片,匹配到就进行操作。本方法测试过能够简单实现,未在实际的项目中测试。匹配到后的操作后期应进行拓展。
# 匹配点击的守护进程,注意守护进程随主进程消失。实现全程监控手机屏幕上的异常情况
# 创建守护进程时 全屏的截图图片名字需要另外设置
# 注意调用时由于这个方法是创建新的进程,所以,需要在main中执行
def match_daemon(self, click=True):
daemon_process = multiprocessing.Process(target=self.wait_and_match, args=(click, True), name='守护进程',
daemon=True)
daemon_process.start()
下面的一些简单的点点点操作是可以,稳定实现的。运行速度较慢,不适合作项目的全过程使用,但是由于不是会话形式的,可以随时无缝接驳其他的自动化工具。 如appium , u2等。
Click_pic('weixin.png',udid='W4ONOZNJU859MVN7').wait_and_match_process()
Click_pic('friend.png',Related=(0.9,1)).wait_and_match_process(timeout=10)
Click_pic('input.png',udid='W4ONOZNJU859MVN7').input_text('jajjfjdf')
Click_pic('send.png').check_and_click()
Click_pic('back.png').check_and_click()
Click_pic('discover.png').check_and_click()
Click_pic('friends_o.png').check_and_click()
Click_pic('photo.png').check_and_click()
Click_pic('paishe.png').click()
Click_pic('photobutton.png',Related=(0.6,1)).wait_and_match_process()
Click_pic('done.png').click()