热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

此内容不能显示在一个框架中_AppUI自动化中的图像识别的使用

人工智能现在使用的越来越成熟了,如人脸识别,图像识别等,在AppUI自动化测试中,也有越来越多的框架或是公司引入图像识别技术

     人工智能现在使用的越来越成熟了,如人脸识别,图像识别等,在AppUI自动化测试中,也有越来越多的框架或是公司引入图像识别技术来提高自动化测试的执行效率。图像识别,是指利用计算机对图像进行处理、分析和理解,以识别各种不同模式的目标和对象的技术,是应用深度学习算法的一种实践应用。 现阶段图像识别技术一般分为人脸识别与商品识别,人脸识别主要运用在安全检查、身份核验与移动支付中;商品识别主要运用在商品流通过程中,特别是无人货架、智能零售柜等无人零售领域 。

        图像的传统识别流程分为四个步骤:图像采集→图像预处理→特征提取→图像识别。图像识别软件国外代表的有康耐视等,国内代表的有图智能、海深科技等。另外在地理学中指将遥感图像进行分类的技术。

一,测试框架中的图像识别

     在我们做 App 自动化测试的时候,会发现很多场景下元素没有 id、content-desc、text 等等属性,并且有可能也会碰到由于开发采用的是自定义 View,View 中的元素也无法识别到,很多的自动化测试框架对此类场景束手无策。Appium 在 V1.9.0 中有给我们带来了针对于图像识别的全新图片元素定位的方法:-image

b036b609bd00c4b074a23e049a650136.png

具体使用方法可以参考:http://testingpai.com/article/1597824416789

      如果是公司自己做二次开发的自动化测试框架,可以根据业务需要自行集成图像识别功能,方便在做AppUI自动化测试时,提高测试效率。

二,收费的图像识别服务

       现在越来越多的公司都提供了云服务,在服务的产品当中,都有图像识别服务,如下所示:

695ebf7b1c4e930bbf2148ad08a31408.png

当前提供图像识别服务的云有:

  • 百度云:https://cloud.baidu.com/solution/aiplatform/index.html

  • 阿里云:https://ai.aliyun.com/image?utm_content=se_1006839984

  • 腾讯云:https://cloud.tencent.com/product/generalocr

  • 商汤图像识别:https://www.sensetime.com/cn/technology-detail?categoryId=30

      当你们公司需要引入图像识别服务,来提高AppUI自动化测试效率时,就需要购买相应的服务。当得到对应的Key后,就可以通过调用相应的API来处理图像识别需求,结合AppUI自动化测试框架,处理自动化实施过程中传统框架无法操作的元素识别等操作。

三,APPUI中如何引用图像识别

      在做APPUI自动化测试时,常规的做法就是:

   (1)引入自动化测试框架,如Appium;

  (2)借助于编码语言,通过对App元素的属性,如resouce_id, Xpath, text等属性定位要操作的元素;

  (3)根据测试用例的需求,对相应的元素做指定的操作,如:click,send_keys等。

     但在自动化测试执行过程中,就会遇到各种问题,如:

(1)被测试App元素属性有变化,属性被开发修改,打包的时候代码混淆从而造成测试用例必须进行维护;

(2)测试用例执行完成,需要检测的内容较多,定位检测元素效率比较低等。

(3)被测App无法获取元素属性,传统定位方法无法定位;

(4)App测试中唤起其他的应用,造成driver需要切换等。

    为了解决这样的问题,引入图像识别方法是最优的解决方案,而图像识别解决的App通用操作有:

1,获取页面所有元素,检测需要操作的元素

通过图像识别功能,先将用例执行到需要操作的页面;对当前页面进行截屏,然后调用图像识别功能,识别出当前页面上的所有元素。接下来需要过滤出要操作的页面元素,如,通过元素上的文字筛选元素;通过元素类别,如image,button来区分元素;通过位置来筛选元素,如:元素在屏幕右上角,则判断元素的位置,x大于屏幕的一半,y小于屏幕的三分之一就是要查找的元素。找到要操作的元素后,执行需要的操作即可。

2,通过元素文字操作元素

一个应用无论从元素属性,还是打包混淆来影响自动化测试,但是元素显示的文字内容变化的频率是相对来说要小的多。如果能通过元素的文案来操作元素,将是不错的选择。我们借助于图像识别法,可以识别出元素对应的文字所在的位置,然后使用driver.click(x,y),就可以单击相应位置的元素。此方法可以执行单击元素操作,当然也可以对输入框输入内容。如果对输入框输入内容的话,先单击这个输入框,让其处于激活状态,然后使用driver.sendKeys()输入内容。

3,检测测试结果

    当一个测试用例执行完成后,需要检测一下用例的执行情况。此时可以通过封装函数,获取当前页面的所有文字信息,然后检测用例执行效果的关键文字,是否在当前页面?如果在,则认为当前用例执行通过,如果不在则用例执行失败。

    当然,如果用例关注的检测点较多,或是关注页面布局,图片信息等,则可以采取图像对比法。我们截取标准的页面显示,然后在执行完用例后,保存当前页面与标准页面做对比,设置相似度,如99%为测试通过,否则为测试失败。但是此方法有一定的问题,不能做兼容性测试,不同的设备显示的内容是不一样的。

4,封装业务操作

    在完成了上面的基本元素的图像操作后,就可以根据你要测试的产品的业务逻辑,封装一定的业务函数,从而提高代码的通过性。如下:美团众包的图像识别法进入接单设置功能函数:

/**

* 进入接单设置页

*/

public void enterOrderSetting()

{

   if(!checkEleByText("刷新列表"))

   {

       startWork();

   }

   Utils.sleep(3000);

   clickByText("接单设置");

   //处理首次进入的提醒

   if(checkEleByText("知道了"))

   {

       clickByText("知道了");

   }

   System.out.println("进入接单设置页....");

  Utils.sleep(3000);

   driver.back();

}

四,AppUI图像识别法使用注意事项

      图像识别法虽然可以解决不少AppUI自动化存在的问题,但是我们也需要知道其劣势,合理地与传统的自动化测试框架配合,从而才能达到使我们的自动化测试工程执行效率最好,发挥最佳的使用用。

1,图像识别的效率消耗

在引用语言,框架的图像识别法时,需要先将当前页面进行截图,然后分析图像上的元素,文案信息。无论是什么图像识别算法,都是有一定的效率消耗的,所以不能在测试用例中反复引用图像识别法,要根据业务操作,安排好执行策略,提高效率。

2,图像识别的网络消耗

     如果使用的是第三方提供的图像识别服务,识别效率比我们自己的会高一些,但是就会有相应的网络请求。过多的网络请求,也会影响自动化测试的执行效率,同时开通的服务是按次收费的,如果测试安排的不合理,网络和金钱的消耗会非常多。

3,合理结合传统框架与图像识别

在实施AppUI自动化测试时,先分析产品的情况,如果产品变化较小,元素属性清晰,建议首先选择通过元素属性进行定位,如resouce_id。针对元素属性变化较多,页面无法抓取属性(竞对产品),H5页面,跨App的操作,检测元素内容较多,检测对象是图片等情况,就引入图像识别法解决相应的问题。

五,总结

  本文介绍了如何在AppUI自动化测试中使用图像识别法,此方法可以降低测试的维护成本,提高测试用例的执行效率。当然,也有一定的限制,可以根据公司的需要,可使用的资源来合理规划你的自动化测试架构设计,将AppUI自动化真正地在业务中使用起来,发挥其有的使用。




推荐阅读
  • 使用 ListView 浏览安卓系统中的回收站文件 ... [详细]
  • V8不仅是一款著名的八缸发动机,广泛应用于道奇Charger、宾利Continental GT和BossHoss摩托车中。自2008年以来,作为Chromium项目的一部分,V8 JavaScript引擎在性能优化和技术创新方面取得了显著进展。该引擎通过先进的编译技术和高效的垃圾回收机制,显著提升了JavaScript的执行效率,为现代Web应用提供了强大的支持。持续的优化和创新使得V8在处理复杂计算和大规模数据时表现更加出色,成为众多开发者和企业的首选。 ... [详细]
  • 在当前的软件开发领域,Lua 作为一种轻量级脚本语言,在 .NET 生态系统中的应用逐渐受到关注。本文探讨了 Lua 在 .NET 环境下的集成方法及其面临的挑战,包括性能优化、互操作性和生态支持等方面。尽管存在一定的技术障碍,但通过不断的学习和实践,开发者能够克服这些困难,拓展 Lua 在 .NET 中的应用场景。 ... [详细]
  • Python全局解释器锁(GIL)机制详解
    在Python中,线程是操作系统级别的原生线程。为了确保多线程环境下的内存安全,Python虚拟机引入了全局解释器锁(Global Interpreter Lock,简称GIL)。GIL是一种互斥锁,用于保护对解释器状态的访问,防止多个线程同时执行字节码。尽管GIL有助于简化内存管理,但它也限制了多核处理器上多线程程序的并行性能。本文将深入探讨GIL的工作原理及其对Python多线程编程的影响。 ... [详细]
  • 基于OpenCV的图像拼接技术实践与示例代码解析
    图像拼接技术在全景摄影中具有广泛应用,如手机全景拍摄功能,通过将多张照片根据其关联信息合成为一张完整图像。本文详细探讨了使用Python和OpenCV库实现图像拼接的具体方法,并提供了示例代码解析,帮助读者深入理解该技术的实现过程。 ... [详细]
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
  • Cisco OSI 软件更新指南:详细步骤与最佳实践
    Cisco OSI软件更新指南提供了详细的步骤和最佳实践,帮助用户高效、安全地完成软件升级。本文不仅涵盖了更新前的准备工作,还详细介绍了更新过程中的关键步骤和注意事项,确保系统稳定性和安全性。此外,还提供了故障排除和验证方法,以确保更新后的系统运行正常。 ... [详细]
  • 在最近的WWDC17大会上,苹果公司宣布了多项重要更新,其中一项是macOS High Sierra 10.13 Final的正式发布。这一版本经过优化,显著提升了系统的稳定性和响应速度,为用户在任何Mac设备上提供了更加流畅的使用体验。本文将详细介绍如何在Windows系统中利用VMware虚拟机软件安装并运行macOS High Sierra 10.13 Final,帮助用户在非苹果硬件上体验这一先进操作系统。 ... [详细]
  • 卓盟科技:动态资源加载技术的兼容性优化与升级 | Android 开发者案例分享
    随着游戏内容日益复杂,资源加载过程已不仅仅是简单的进度显示,而是连接玩家与开发者的桥梁。玩家对快速加载的需求越来越高,这意味着开发者需要不断优化和提升动态资源加载技术的兼容性和性能。卓盟科技通过一系列的技术创新,不仅提高了加载速度,还确保了不同设备和系统的兼容性,为用户提供更加流畅的游戏体验。 ... [详细]
  • 通过使用 `pandas` 库中的 `scatter_matrix` 函数,可以有效地绘制出多个特征之间的两两关系。该函数不仅能够生成散点图矩阵,还能通过参数如 `frame`、`alpha`、`c`、`figsize` 和 `ax` 等进行自定义设置,以满足不同的可视化需求。此外,`diagonal` 参数允许用户选择对角线上的图表类型,例如直方图或密度图,从而提供更多的数据洞察。 ... [详细]
  • 2018 HDU 多校联合第五场 G题:Glad You Game(线段树优化解法)
    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6356在《Glad You Game》中,Steve 面临一个复杂的区间操作问题。该题可以通过线段树进行高效优化。具体来说,线段树能够快速处理区间更新和查询操作,从而大大提高了算法的效率。本文详细介绍了线段树的构建和维护方法,并给出了具体的代码实现,帮助读者更好地理解和应用这一数据结构。 ... [详细]
  • 深入理解排序算法:集合 1(编程语言中的高效排序工具) ... [详细]
  • 在 Vue 应用开发中,页面状态管理和跨页面数据传递是常见需求。本文将详细介绍 Vue Router 提供的两种有效方式,帮助开发者高效地实现页面间的数据交互与状态同步,同时分享一些最佳实践和注意事项。 ... [详细]
  • 在Django中提交表单时遇到值错误问题如何解决?
    在Django项目中,当用户提交包含多个选择目标的表单时,可能会遇到值错误问题。本文将探讨如何通过优化表单处理逻辑和验证机制来有效解决这一问题,确保表单数据的准确性和完整性。 ... [详细]
  • 能够感知你情绪状态的智能机器人即将问世 | 科技前沿观察
    本周科技前沿报道了多项重要进展,包括美国多所高校在机器人技术和自动驾驶领域的最新研究成果,以及硅谷大型企业在智能硬件和深度学习技术上的突破性进展。特别值得一提的是,一款能够感知用户情绪状态的智能机器人即将问世,为未来的人机交互带来了全新的可能性。 ... [详细]
author-avatar
woshishuia小姐
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有