基于图像识别的ui操作--3

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()
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值