如何在Appium中使用AI?

发表于:2019-4-12 13:23  作者:Test Ninja   来源:软件质量报道

字体: | 上一篇 | 下一篇 |我要投稿 | 推荐标签: Appium

  这让你感到有点惊讶吗?但它确实发生着。
  通过与Test.ai的团队合作,Appium项目开发了一个AI驱动的元素查找插件Appium Classifier Plugin(https://github.com/testdotai/appium-classifier-plugin),专门用于Appium。
  在Appium的最新版本中,为第三方开发人员添加了为Appium创建“插件”的能力。借助这种能力,开发了上述插件Appium Classifier Plugin,这插件可以使用Appium驱动程序以及其自己的独特功能来查找元素。正如下面脚本示例所展示的,用户可以通过在其Appium目录中将插件作为NPM模块安装,然后使用customFindModules功能向Appium服务器注册插件来访问这些插件。
  Appium Classifier Plugin是结合了Test.ai的机器学习模型,用于对应用程序图标进行分类,完成移动应用App界面的新元素查找。这个机器学习模型的训练数据是开源的,它可以告诉我们,给定图标的输入,图标代表什么样的东西(例如,购物车按钮或后退箭头按钮)。我们可以使用此插件根据其外观在屏幕上查找图标,即通过视觉外观查找元素,因此它仅适用于显示单个图标的元素。幸运的是,这些元素在移动应用程序中非常常见。
  在许多情况下,这种方法比现有定位器策略(如可访问性ID或图像)更灵活,因为AI模型经过训练以识别图标而无需任何上下文,并且不要求进行图像样式的精确匹配,这意味着使用插件查找“购物车”图标可以跨应用程序和跨平台工作,而无需担心细微差别
  让我们来看一个具体的例子,展示最简单的用例。如果启动iOS模拟器,则可以访问App程序Photos,其外观如下所示:
  注意顶部附近的小图标,点击后会打开一个搜索栏:
  下面,就让我们编写一个使用新插件查找并单击该图标的测试。首先,我们需要遵循插件自述文件中的设置说明,以确保一切正常。然后,我们可以设置我们的Desired Capabilities以针对App Photos进行测试:
   DesiredCapabilities caps = new DesiredCapabilities();
  caps.setCapability(“platformName”,“iOS”);
  caps.setCapability(“platformVersion”,“11.4”);
  caps.setCapability(“deviceName”,“iPhone 6”);
  caps.setCapability(“bundleId”,“com.apple.mobileslideshow”);
  现在我们需要添加一些新功能:customFindModules(告诉Appium我们想要使用的AI插件)和shouldUseCompactResponses(在插件设置说明中要求设置此功能):
   HashMap <String,String> customFindModules = new HashMap <>();
  customFindModules.put(“ai”,“test-ai-classifier”);
  caps.setCapability(“customFindModules”,customFindModules);
  caps.setCapability(“shouldUseCompactResponses”,false);
  在这里,可以看到customFindModules是一种具有一些内部结构的功能:在这种情况下,“ai”是在测试中可以内部使用的插件的快捷方式名称,“test-ai-classifier”是完全限定的引用,当我们用它请求元素时,Appium需要能够找到并使用该插件。
  一旦我们完成了所有这些,找到元素非常简单:
  driver.findElement(MobileBy.custom( “ai:search”));
  在这里,我们使用新的自定义定位器策略,以便Appium知道我们需要一个插件,而不是其支持的定位器策略之一。然后,我们在选择器前面加上ai:让Appium知道我们要为这个请求特别使用哪个插件(因为可能有多个)。当然,因为我们实际上只使用一个插件进行此测试,所以我们可以取消前缀:
  driver.findElementByCustom( “search”);
  (注意:要在Java客户端代码中获取这些命令,需要使用未发布的客户端新版本,请参阅Appium Pro build.gradle以了解如何执行此操作)。
  目前该技术在当前具有一些显着的局限性,例如只能可靠地找到作为模型已被训练检测的图标之一的元素。最重要的是,这个过程相当慢,无论是在插件代码中(因为它必须检索屏幕上的每个元素以便将信息发送到模型中),以及模型本身。然而,所有这些领域将来会有所改善。即使这个特定的插件对你的日常工作没有价值,它也证明了AI在测试空间中的具体应用不仅是可能的,而且是实际的!
  让我们快乐测试!让测试更智慧!

       上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。

>>每天充电一小时,搞定Python全栈测试开发

评 论

论坛新帖

顶部 底部


建议使用IE 6.0以上浏览器,800×600以上分辨率,法律顾问:上海瀛东律师事务所 张楠律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2019, 沪ICP备05003035号
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪公网安备 31010102002173号

51Testing官方微信

51Testing官方微博

扫一扫 测试知识全知道