Tag: 移动自动化测试

通过Appium实现iOS并行化-一种优雅的方式

没有值得拥有的东西,变得容易。 直到2017年6月,iOS Parallelisation也是如此。 XCode的限制是每个运行者仅允许一个模拟器,这是UI自动化开发人员的主要限制,这导致反馈周期变慢。 进行15个小时的约500次测试的回归套装只是一种常态。 在您决定去还是不去之前十五小时! 随着“移动优先”或“仅移动”趋势的发展,IOS自动化很快成为加快发布周期的瓶颈。 然后,Facebook的FBSimulatorControl带来了一线希望。 FBSimulatorControl是一个macOS库,用于同时管理,引导和与多个iOS模拟器进行交互。 尽管该解决方案非常出色,但对于围绕Appium和Cucumber构建的自动化框架却很少使用。 将数百个测试迁移到该框架是一个成本更高的解决方案。 这使UI自动化开发人员充满信心,认为iOS并行化是可能的,而Apple的支持将指日可待。 年份2016 在TestVagrant,与Cucumber和Appium一起工作时,我们一次又一次地面对多个客户的相同问题。 我们如何将功能/测试分发到可用设备上? 我们如何在所有可用设备上运行所有功能? 我们如何运行诸如Driver-Customer之类的应用间场景? 我们如何自动检测和管理设备以及维护Appium服务器和Webdriver实例? 我们如何构建有助于快速决策的报告? 我们如何鼓励很少或没有编程经验的qa为自动化做出贡献? 到2016年底,我们已解决了大部分问题,但有些零散的问题。 然后,我们意识到这些不仅是我们面临的挑战,还是整个致力于黄瓜和Appium的社区的绊脚石。 我们将所有解决方案归为一个单一的框架,称为 Optimus,一个开源的移动自动化框架。 Optimus Framework是一个包含多个项目的生态系统,它可以 自动发现已连接的设备(物理设备,仿真器,模拟器) 以多种模式运行黄瓜功能; 分布和碎片化。 运行应用间测试 生成近乎实时的报告,以加快分析速度。 在过去的两年中擎天柱 演变为适用于Appium和Cucumber的近乎完整的移动自动化框架。 但是它错过了一项关键功能,即并行运行iOS测试。 年份2017 终于在2017年,XCode正式在单个iOS主机上支持了多个模拟器,并且Appium社区足够快地支持并行iOS测试。 然后,社区中出现了一些解决方案,使iOS并行化成为可能,但是设置很麻烦,例如 为连接的设备管理多个WebDriverAgent。 通过唯一的服务器实例路由Appium命令。 作为质量检查人员,我们认为应该减轻设置方面的麻烦,并且不应成为自动化的障碍。 Optimus提取了所有设置机制,并允许团队在几分钟内建立Device Lab。 通过对擎天柱的一些调整,我们确定可以在iOS模拟器和设备上并行运行黄瓜功能。 擎天柱3.0 借助Optimus 3.0,自动化团队现在可以在iOS设备上并行运行其测试服,而无需担心基础设置。 这是它的一瞥。 方便的资源 Optimus — https://github.com/testvagrant/optimusTemplate Wiki-https://github.com/testvagrant/optimusTemplate/wiki Gitter — https://gitter.im/optimus_support/optimus […]

如何使用Appium在iOS中自动执行“共享”

在移动Web应用程序上工作时,曾想过自动共享链接或iOS中的图片。 假设您具有Appium的基础知识,让我们逐步完成如何通过Appium完成任务。 这是当您意识到需要找到元素定位器的另一种方法时。 这是识别和单击特定图标以实现目标所需遵循的步骤。 第一步是在浏览器屏幕上单击“共享”按钮,这是一个本地iOS元素,而不是Web元素。 您需要使用appium将应用上下文切换为NATIVE,然后找到元素“ Share”,否则,如果您在浏览器模式下打开了Safari,则最终将出现“ no_such_element_error”。 以下是将上下文切换到本机视图的代码段。 //从webView切换到本机视图 Set contextNames = driver.getContextHandles(); 对于(String contextName:contextNames){ 如果(contextName.contains(“ NATIVE”)) driver.context(contextName); } 下一步,找到您实际想要共享的应用程序的标识符,并使用appium inspector检查布局,您将在其中找到布局的可访问性ID,如下所示,然后按照以下步骤操作。 现在,在同时打开模拟器的情况下,单击“开始检查跟随点”按钮,然后将焦点放在要使用其标识符的元素上。 您将获得布局可及性ID和标签名称,这足以使您到达确切的元素。 现在,只需开始用您喜欢的语言编写代码即可自动完成上述情况的测试。 这是用Java编写的代码片段。 //找到并单击元素 driver.findElementByAccessibilityId(“ Share”)。click(); driver.findElementByAccessibilityId(“ ActivityListView”) .findElement(By.xpath(“ // * [包含( @ label,’Reminders’)]“))。click(); 到这里,最终代码看起来像 //从webView切换到本机视图 Set contextNames = driver.getContextHandles(); 对于(String contextName:contextNames){ 如果(contextName.contains(“ NATIVE”)) driver.context(contextName); } //找到并单击元素 driver.findElementByAccessibilityId(“ Share”)。click(); driver.findElementByAccessibilityId(“ ActivityListView”) .findElement(By.xpath(“ […]