Appium跨平台移动自动化工具

什么是Appium?

Appium 是一款开源测试自动化工具,由 Sauce Labs开发和支持,支持 iOS 平台和 Android 平台上的原生应用,web应用和混合应用。它也是一款跨平台移动自动化工具。它在通过使用 JSONWP协议(WebDriver开发者编写的一种通信机制),使用Selenium WebDriver与iOS和Android本机应用程序进行交互

市场上有许多其他自动化工具可用于自动化操作本机应用程序,如MonkeyTalk,KIF,Calabash和Frank,但大多数这些工具需要使用您的应用程序代码编译额外的agent,以便该工具可以与移动应用程序进行交互。那么问题来了,您需要在提交应用程序之前删除这些自动化agent库,从而保证您所测试的应用程序与您在App Store中提交的应用程序相同,徒增麻烦?

Appium这个由Node.js编写实现的自动化工具是Android iOS 的混合和原生移动应用程序走向自动化的一个关键作用。它的核心原则之一是测试代码可以用任何框架或语言编写,如Ruby on Rails,C#和Java,而无需为自动化去修改应用程序。node.js服务器和Selenium客户端库之间的交互最终与移动应用程序一起工作。而且Appium是开源的,可以在各种设备和模拟器上无缝运行,使其成为移动测试自动化的最佳选择。

 

Appium 体系结构

Appium是一个用node.js编写的HTTP服务器,它为iOSAndroid等不同平台创建和处理多个WebDriver会话。

Appium在设备上启动“测试用例”,该设备生成服务器并从Appium 服务器侦听代理命令。它与Selenium服务器几乎相同,后者从selenium客户端库中感知HTTP请求,并根据平台以不同方式处理这些请求。像iOSAndroid这样的每个供应商都有不同的方式和机制来在设备上运行测试用例,因此Appium会侵入并在从Appium服务器监听命令后运行此测试用例。

Appium如何在iOS中运行


在iOS上,Appium代理命令到在Mac Instruments环境中运行的UIAutomation脚本。 Apple提供了这个名为“instruments”的应用程序,用于执行分析,控制和构建iOS应用程序等许多活动,但它还有一个自动化组件,我们可以在javascript中编写一些命令,使用UIAutomation API与App UI进行交互。 Appium利用这些相同的库对iOS应用程序进行自动化。

Appium

在上图中,我们可以在iOS自动化的描述中看到Appium的体系结构。如果我们谈论一个命令生命周期,就像Selenium webdriver从(Element.click)这样的代码中选择一个命令,并通过http请求以JSon的形式发送给Appium服务器。 Appium服务器知道像iOS和Android这样的自动化特征,并将此命令发送到Instruments命令服务器,该命令服务器将等待Instruments命令客户端(用node.js编写)来获取它并在iOS中的bootstrap.js中执行它仪器环境。执行该命令后,命令客户端将消息发送回Appium服务器,该服务器在其控制台中记录与该命令相关的所有内容。这个循环一直持续到所有命令执行的时间。

Appium如何在Android中运行


在Android的情况下情况几乎相似,其中Appium代理命令到在设备上运行的UIAutomator测试用例。 UIAutomator是Android的原生UI自动化框架,支持从命令行直接将junit测试用例运行到设备中。它使用java作为编程语言,但Appium将其解析成任何WebDriver支持的语言运行。

Appium

在上图中我们可以看到,这里我们用Bootstrap.jar代替bootstrap.js,它代表了在java中编译时的测试用例。一旦它启动它就会产生一个TCP服务器。这里TCP服务器驻留在设备内部,客户端处于Appium进程中,这与iOS中的方式完全相反。

 

Appium的优点和缺点:

优点:

  • Appium的美妙之在于,所有复杂性都在Appium服务器的引擎盖下,对于自动化开发人员而言,编程语言和整个体验将保持相同,无论他自动化的平台(iOS或Android)如何。
  • Appium的其他好处是它打开了跨平台移动测试的大门,这意味着相同的测试可以在多个平台上运行。
  • 与其他工具不同,Appium不要求您在应用程序中包含一些额外的代理,以使其自动化。它相信我们将在应用程序商店中测试相同应用程序的理念。
  • 它由Sauce Labs开发和支持,并且在WebDriver社区中用于移动自动化的速度非常快。
  • 它可以自动化Web,HybridNative 移动应用程序。

缺点:

  •  
  • 扩展是持续集成的重要考虑因素,而Appium是实现这一期望的重要工具。 原因是技术限制,在iOS中我们只能在每台Mac OS上运行一个实例,因此我们只能在每一台mac机器上运行我们的iOS脚本。 因此,如果我们想要同时在多个iOS设备上运行我们的测试,那么需要安排相同数量的Mac机器,这将会代价很大。 但是,如果我们在Sauce Lab的移动云中执行我们的脚本,目前支持在多个iOS模拟器上同时运行脚本,则可以解决此限制。
    Appium使用UIAutomator对于Android的自动化,只支持Android的SDK平台,API 16或更高版本,以便支持旧的API,他们使用另一个名为开源库Selendroid。所以我不会说它是一个限制,但它绝对是配置方面的开销。

在Mac上配置Appium:

在Mac 上运行Appium需要以下配置:

  • 首先,我们需要从此链接下载适用于Mac 的Appium应用程序  。下载后,您需要将此应用程序移动到您的应用程序文件夹,然后您可以从Mac Launchpad启动它。
  • 由于Appium在内部使用node.js所以我们还需要在mac机器上安装node,可以从http://nodejs.org/下载   ,它提供一个node-v0.10.xx.pkg文件供您安装。
  • 我们还需要确保使用的是  Mac OSX 10.7+
  • 应在mac机器上安装XCode 4.5或更高版本以及iPhone模拟器SDK和命令行工具。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值