Tag: appium

通过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 […]

如何设置Bitrise CI以运行iOS的自动Appium和Cucumber UI测试

为什么要堆叠? 在codequest中,一段时间以来,我们一直在使用Bitrise作为iOS应用程序的CI / CD工具。 最近,我们的团队不断壮大,并且我们已经获得了一个最有价值的新成员–质量检查工程师,他掌握了用Appium和Cucumber.rb(Ruby版本)编写UI测试的知识。 问题是–如何在Bitrise上进行全部设置,目前在这里只有自动化的单元测试运行并测试应用程序部署。 就像我们一样,大多数阅读此书的人可能正在寻求帮助。 令我们惊讶的是,即使是谷歌搜索也无法帮助我们找到逐步的指导。 因此,我将不涉及很多细节,也不用追逐。 我们的环境 下一步将需要一些细节。 可以这样说: 独角兽–这是我们的项目名称 Unicorn.xcworkspace –项目的工作区(我们使用Pods) 独角兽–要构建的Xcode方案名称 Unicorn.app –由构建创建的二进制文件的名称,可以在Xcode中检查(选择目标)➞构建设置➞产品名称 com.codequest.Unicorn –我们的应用程序捆绑包ID AppiumUITests / Unicorn –在git存储库中的此路径下,我们保留UI测试 我们不在git仓库中保留任何.app文件 在Bitrise中创建UI测试步骤 1.通过单击+工作流程按钮并设置名称来创建新的工作流程。

如何使用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(“ […]

macOS下的Appium安装和配置

系统要求和说明: macOS 10.11或更高版本 brew需要最新版本的Xcode或Xcode Command Line 介绍 iOS 9.3及以下版本使用自动化作为基础技术,XCUITest出现在iOS 9.3中,而自动化在iOS 10中被放弃,因此Appium在iOS 9.3及以下版本中的配置与iOS 10不同。 如果已安装部分依赖项,则可以直接跳过它 自家安装 强烈建议使用Homebrew安装macOS上的所有软件。 使用brew安装的软件,不再需要sudo命令。 打开终端,复制并运行: / usr / bin / ruby -e “ $( curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install ) ” brew的使用非常简单,安装软件即可使用 brew install # 如果brew提示Xcode版本太低,则需要安装Xcode的新版本(安装时可以保存两个版本) 下载网址:https://developer.apple.com/download/more/ Nodejs安装 brew安装节点@ 8 检查安装是否成功 节点-v #v6.9.1 npm -v #3.10.8 Appium安装 Node.js的用法 Appium本质上是一个Nodejs应用程序,我们可以使用npm来安装它,安装完成后,可以使用命令行来启动 npm install -g appium 您可以使用appium-doctor确认安装环境是否完整。 […]

创建Appium所需的功能和WebDriverAgent的设置

我已经写了一篇有关如何在Mac上安装Appium以及应安装哪些依赖项的文章。 本文重点讨论您需要在Appium中指定哪种所需的功能才能在真实的iOS设备上运行测试,以及如何配置WebDriverAgent。 确保已安装libimobiledevice和ios-deploy。 如果没有,那么您需要安装: $ brew install libimobiledevice –HEAD $ npm install -g ios-deploy 运行Appium桌面应用程序并启动服务器。 服务器启动且没有错误时,请转到Appium Inspector,单击“启动Inspector会话”。 在“自动服务器”选项卡中,转到“所需功能”选项卡。 要使用iOS设备,您需要指定以下值: platformName -iOS platformVersion —指定将在其上运行测试的设备版本 deviceName-指定设备名称(设置->常规->关于->名称) automationName-指定自动化引擎。 UIAutomation(iOS 9.2及更低版本)或XCUITest(iOS 9.3及更高版本) 应用程序 —绝对本地路径或远程http URL noReset (true / false)-在单个appium会话期间不重置应用程序状态 udid —指定唯一的设备标识符 xcodeOrgId-指定Apple Developer Team ID,您可以在Apple Developer Portal- >帐户->成员资格-> Team ID中找到它 xcodeSigningId —通常是iPhone开发人员 您可以找到Appium所需功能和特定于XCUITest的功能的列表。 结果,您将获得JSON表示形式中的功能列表。 { “ platformName”:“ iOS”, “ […]

在Mac上设置Appium 1.6.4(测试版)并在物理设备上测试您的App

Appium是用于本机,混合和移动Web应用程序的开源测试自动化框架。 它使用WebDriver协议驱动iOS,Android和Windows应用程序。 本指南可帮助您在Mac机器上设置Appium(在本例中为v1.6.4@beta)。 它从appium.io的Native iOS Automation教程中提到的常规步骤开始。 实际的安装从安装​​Ruby开始, 本节几乎完成了安装过程。 由于尚无GUI在运行Appium v​​1.6.4时检查视图层次结构。 我遵循这里提到的选项#1 解决这个问题。 由于代码签名问题或错误的捆绑包标识符,位于appium / node_modules / appium-xcuitest-driver / WebDriverAgent /的WebDriverAgent.xcodeproj遇到了一些问题。 这就是我通过大量在线线程的帮助解决了机器上的这些问题((xcode退出,错误253…)和其他此类WebDriverAgent问题)的方法。 首先,将以下两行添加到appium / node_modules / appium-xcuitest-driver / WebDriverAgent / Configurations / ProjectSettings.xcconfig 添加以上两行后,您的.xcconfig文件如下所示 #2 WebDriverAgentLib-“构建设置”选项卡-打包 #3 WebDriverAgentLib-“构建设置”选项卡-签名 #4 WebDriverAgentRunner-“常规”选项卡 #5 WebDriverAgentRunner-“构建设置”选项卡-打包 #6 WebDriverAgentRunner-“构建设置”选项卡-签名 请不要选择任何特定的iOS开发者身份进行代码签名,因为这可能会在“常规”标签>“签名”部分中引发错误。 现在,运行以下命令,看看如果测试执行失败,它是否抛出任何错误。 xcodebuild测试构建测试,无需构建-project / Users / /appium/node_modules/appium-xcuitest-driver/WebDriverAgent/WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination id = […]

获取错误“xargs”不被识别为内部或外部命令。 通过Windows运行iOS的appiumtesting

当我运行下面的代码的Appiumtesting using System; using OpenQA.Selenium; using OpenQA.Selenium.Appium; using OpenQA.Selenium.Appium.Interfaces; using OpenQA.Selenium.Appium.MultiTouch; using OpenQA.Selenium.Interactions; using OpenQA.Selenium.Remote; using OpenQA.Selenium.Appium.Android; using OpenQA.Selenium.Appium.iOS; using NUnit.Framework; namespace Hof.Mobile.Tests.UIAutomation { [TestFixture()] public class TestAppium { public static IWebDriver driver = null; [TestFixtureSetUp] public void SetUp() { DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.SetCapability("browserName", "Safari"); capabilities.SetCapability("deviceName", "iOS"); capabilities.SetCapability("platformName", "ios"); capabilities.SetCapability("udid", "<<my udid >>"); […]

无法启动Appium Inspector

如果在从appium服务器启动iOS应用程序的时候,如何克服这个问题,无法打开appium inspecter,请帮我出来团队人员。 这下面的popup警告信息 请确保Appium服务器正在使用Appium.app中的“App Path”参数(以及Android的包和活动)打开的应用程序运行,或者通过与selenium客户端连接并将其提供给所需的function对象。 请帮我出来的小组伙计。

点击button时自动testing失败

我从appium github下载了一个简单的应用程序,并尝试使用Appium Server(1.3.3版)为其编写自动化testing。 这是我的代码 import io.appium.java_client.AppiumDriver; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.openqa.selenium.By; import org.openqa.selenium.remote.DesiredCapabilities; import java.net.MalformedURLException; import java.net.URL; import java.util.concurrent.TimeUnit; import static org.testng.AssertJUnit.assertEquals; public class AppiumDemo { private AppiumDriver ad; @Before public void setupTest(){ DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setCapability("appium-version", "1.3.3"); capabilities.setCapability("platformName", "iOS"); capabilities.setCapability("platformVersion", "7.1"); capabilities.setCapability("deviceName", "iPhone 5s"); capabilities.setCapability("app", "/Users/admin/Downloads/TestApp.app"); try { ad […]

苹果检查员不在Mac上运行

我有与xcode 6.2和ios 8.4.1 appium版本1.4。 我运行appium医生,一切都很好的ios平台。 在运行检查器,它会引发这个错误: 无法启动新的会话,所需的应用程序path 我也给了应用程序path。