首页 > 其他分享 >AI进行元素识别和文字识别实现UI自动化测试

AI进行元素识别和文字识别实现UI自动化测试

时间:2024-04-09 16:24:47浏览次数:29  
标签:文字 yolo exists AI 元素 UI 识别

【背景】

一般移动端APP会有页面元素属性,比如:ID,ClassName,Text等,可以方便定位需要操控的元素控件。而这类的UI控件识别框架的结果输出往往依赖于开发同学在代码中对控件元素进行合理有效的命名,且一旦这些控件元素被混淆后就很难进行有效的元素定位。为了降低每个版本UI元素的层级等变化造成的自动化测试用例元素维护成本,故采用图像界面识别的方式进行UI自动化测试

【目前痛点】

1、自动化框架元素识别能力不足

现在很多应用在PC端目前就没有能识别出元素的自动化框架从而无法进行UI自动化测试,而在移动端市场上常用的一些自动化测试框架,比如python-uiautomator2依赖于开发框架和开发对元素的命名才能识别,对RN页面、H5、小程序等元素的识别支持也不是很好

2、多机型多分辨率兼容

回归测试中需要对多机型进行覆盖测试,因机型分辨率的问题,同一个页面也会因不同的设备展示效果不一样,哪怕同样的元素在不同的设备上展示的大小会不一致

3、多样式元素,半透明元素,无属性元素

在没有合理的控件元素命名的情况下,如果单纯用图片匹配的方式,很难剔除背景色对图片匹配结果的影响

【技术方案】

1、采用yolo进行UI界面非文字元素的目标检测模型训练

2、采用paddleocr进行UI界面文字的识别

3、在测试脚本中增加自动截图,在执行自动化用例时自动收集分析

4、采用yolo+ocr文字识别的模式对界面的各个非文字元素和文字中心位置进行识别确定

5、android可以结合uiautomator2进行坐标点击,iOS结合facebook-wda

 

【非文字元素目标检测】

【文字元素检测】

 

 

【API】

功能

语法

备注

目标识别

连接指定设备

AI= AI_Elements('设备序列号')

 

获取所有识别到的非文字元素的中心点坐标

AI.get_all_elements()

 

返回类型为字典类型,key为元素,value为识别到元素的中心坐标点位置

判断元素是否存在

AI.yolo_exists('元素1','元素2','...')

yolo_exists(*args:str),根据所要识别的个数自行填写。某个元素不存在直接断言False,都存在返回True

判断元素是否不存在

AI.yolo_not_exists('元素1','元素2','...')

yolo_not_exists(*args:str),根据所要识别的个数自行填写。某个元素存在直接断言False,都不存在返回True

对非文字元素进行点击

AI.yolo_click('元素')

yolo_click(key_word:str,number:int=1)

若某个元素在页面出现多次,默认点击识别中心点位置最高的元素,可根据number参数调整点击第几个,若元素不存在,会断言False

获取识别到的文字内容

AI.get_all_ocr()

 

返回类型为列表类型,包含识别内容的四个点坐标,文字信息,以及置信度

判读元素是否存在

AI.ocr_exists('文字1','文字2','...')

ocr_exists(*args:str),根据所要识别的个数自行填写。某个文字不存在直接断言False,都存在返回True

判断元素是否不存在

AI.ocr_not_exists('文字1','文字2','...')

ocr_not_exists(*args:str),根据所要识别的个数自行填写。某个文字存在直接断言False,都不存在返回True

对文字内容进行点击

AI.ocr_click('元素')

yolo_click(key_word:str,number:int=1)

若某个元素在页面出现多次,默认点击识别坐标位置最高的元素,从上到下,从左到右,可根据number参数调整点击第几个,若元素不存在,会断言False

播放器严重卡顿检测

AI.carton_test()

carton_test(self,number:int=20)

number代表截多少张图验证是否有卡顿

分类检测(绿屏、黑屏、模糊)

AI.anomaly_detection(times=10)

times指定截取多少张图片,判定是否存在异常,若有异常会断言失败保存异常截图

【android实操demo(截图说明)】

from Yolo_Element.core.Ai_Uitest import AI_Elements,Yolo_Classify import time #加载目标检测模型,指定连接设备 AI = AI_Elements('5t65vkeuyhculvde')

'''

第一步启动app

'''

AI.app_start()

'''第二步等待5秒,等待进入首页'''

time.sleep(5)

'''第三步骤,判断是否在首页,以是否有首页的元素,我的日常、搜索、以及feed框架进行判断

'''

AI.yolo_exists('搜索', '我的日常', 'feed框架')

'''第四步,点击文字视频的tab,使feed都为视频

'''

AI.ocr_click('视频')

'''

第五步,点击feed框架进入视频

'''

AI.yolo_click('feed框架')

 

'''第六步,检测视频播放是否有黑屏,绿屏,模糊''' AI.anomaly_detection() '''第七步,检测视频播放是否严重卡顿''' AI.carton_test()

 

标签:文字,yolo,exists,AI,元素,UI,识别
From: https://www.cnblogs.com/ffrs/p/18124230

相关文章

  • .NET CORE中Applicationbuilder的Use和Run方法有什么区别
    .NETCORE中Applicationbuilder的Use和Run方法有什么区别?Applicationbuilder:用于构件应用程序的中间件管道。Use额Run是用来配置中间件和构建管道。Use方法:用于添加中间件到管道中,并指定中间件的处理逻辑,可以多次调用,按照调用顺序一次添加多个中间件。Use方法通常用于添加通用......
  • 谷芦语(Guruica)入门
    简介谷芦语(Guruica)印度尼西亚爪哇岛的中爪哇省山区的谷芦村(guru)的语言,在主要城市梭罗(Surakarta)的东北部。相传当时第一个荷兰探险者进入谷芦村后,指着一个村民询问这是哪里。村民以为是问他是谁,就说“我吗?”(guruauru?),因此此地就被称为guru了。另一说法是村民对探险者打招呼,说......
  • 鸿蒙HarmonyOS实战-ArkUI组件(Video)
    ......
  • Haiper:免费AI视频工具,媲美Sora (附使用教程)
    大家好,我是斜杠君。今天为大家介绍一款AI视频工具。它不仅免费使用,效果稳定,媲美Sora,而且操作简单,是视频创作者的理想伙伴。使用教程免费使用:无门槛的创作体验无订阅,无积分,无限制。这款AI视频工具的最大优势在于它的免费性。用户无需担心订阅费用或是积分制度,可以随时随地开始他......
  • 机器学习 —— MNIST手写体识别
    本文使用工具    Anaconda下载安装与使用    JupyterNotebook的使用    pytorch配置        Jupyternotebook        Pycharm本文使用数据集    机器学习实验所需内容.zip        点击跳转至正文......
  • visionOS 专门应用提交数大幅下降;Kimi 不断「吊打」国内各大厂 AI 模型丨 RTE 开发者
       开发者朋友们大家好: 这里是「RTE开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享RTE(RealTimeEngagement)领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表编辑的个人观......
  • GUI development with Rust and GTK4 阅读笔记
    简记这是我第二次从头开始阅读,有第一次的印象要容易不少。如果只关心具体的做法,而不思考为什么这样做,以及整体的框架,阅读的过程将会举步维艰。简略记录gtk-rs的书中提到的点。对同一个问题书中所演示了多种处理方法,而且跨度比较大,第一次阅读的时候经常出现忘记之前的内容。f......
  • 成像光谱遥感技术中的AI革命:ChatGPT在遥感领域中的应用
    遥感技术主要通过卫星和飞机从远处观察和测量我们的环境,是理解和监测地球物理、化学和生物系统的基石。ChatGPT是由OpenAI开发的最先进的语言模型,在理解和生成人类语言方面表现出了非凡的能力。重点介绍ChatGPT在遥感中的应用,人工智能在解释复杂数据、提供见解和帮助决策过程方面......
  • 全自动ai生成视频MoneyPrinterTurbo源码
    只需提供一个视频 主题 或 关键词 ,就可以全自动生成视频文案、视频素材、视频字幕、视频背景音乐,然后合成一个高清的短视频。Web界面API界面GitHub开源地址:https://github.com/harry0703/MoneyPrinterTurbo源码下载:https://caiyun.139.com/m/i?135CmVGQA5j0s提......
  • SELECT list is not in GROUP BY clause and contains nonaggregated column 'uav.cas
     mysql5.7以上版本抛出错误,SELECTlistisnotinGROUPBYclauseandcontainsnonaggregatedcolumn'uav.case_board.port'whichisnotfunctionallydependentoncolumnsinGROUPBYclause;thisisincompatiblewithsql_mode=only_full_group_bygrougby在5......