最近在做app的UI自动化测试过程中,遇到UI大改版的问题。原本使用Airtest的图片比对来实现点击事件,改版后原有用例无法识别只能重写用例(ps:我们的app不是native开发使用的flutter技术所以无法通过元素来定位)想到工作量太大也不是解决问题的根本办法,观察新版UI发现图标和颜色改变文案没有改变。因此考虑通过识别图片上的文案,然后获取文案的坐标通过坐标来实现点击操作。后来搜索到百度的图文识别的库,识别文字并返回文字坐标。(此功能为收费接口,不过每天有免费调用次数),封装方法如下:

首先安装库:pip install baidu-aip

from aip import AipOcr

""" 你的 APPID AK SK """

APP_ID = '你的 App ID'

API_KEY = '你的 Api Key'

SECRET_KEY = '你的 Secret Key'

client = AipOcr(APP_ID, API_KEY, SECRET_KEY)

""" 调用通用文字识别(含位置信息版), 图片参数为本地图片 """

"""输入需要识别的文案和图片地址,返回文案在图片上的坐标如:[368,96]"""

def return_cordinate(text,imagepath):

""" 读取图片 """

with open(imagepath, 'rb') as fp:

"""识别到信息以字典形式返回"""

dic = client.general(fp.read())

"""遍历字典与想要的文案对比如果对比到就返回坐标"""

for word in dic.get("words_result"):

if word.get("words") == text:

return [word['location']['top'],word['location']['left']]

else:

return None

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐