通过图片实现UI自动化

背景:

        在做UI自动化时无论是PC端还是移动端,其中一个核心步骤就是定位控件,只要控件可以获取到,剩下的步骤就很好操作 ,获取控件的方式有很多,基本的方法有文本,控件Id,父控件加子控件索引,xpath以及轴定位等等,今天再给大家分享一个通过图片进行定位的方法:

语言:python

库:opencv

我们以Android UI自动化为例:

import subprocess
import threading
import time
import numpy
from PIL.Image import Image
from cv2 import cv2
from skimage.metrics import structural_similarity
import imutils

class ElementsApiMobile:
    def __init__(self, driver):
        self.BASE_DIR = Path(__file__).resolve().parent
        self.screen_shot_dir = os.path.join(self.BASE_DIR, 'save_screen_shot')
        self.make_dir(self.screen_shot_dir)
        self.my_driver = driver
		self.mobile_snap_shot_save_path = "/sdcard/Pictures/Screenshots/"
	
	def check_if_in_picture(self, my_small_picture, my_mobile_pic_path=None, my_picture_dir=None, expect_result=True):
        '''
        检查指定区域图片是否在当前设备界面中
        :param my_small_picture: 指定区域的小图
        :param my_mobile_pic_path: 图片截图保存到移动端的路径,可以不传会报错到一个默认路径,此路径在设备上不一定存在,会导致截图失败
        :param my_picture_dir: 本地图片路径
        :param expect_result: 默认存在,如果传False ,期待结果为不存在
        :return:
        '''
        if expect_result:
            if self.find_if_in_picture(my_small_picture, my_mobile_pic_path, my_picture_dir):
                assert True
            else:
                print(f"远程路径:{my_mobile_pic_path} ,图片 {my_picture_dir}中没找到 {my_small_picture}")
                assert False
        else:
            if
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gr1785

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值