1) 解释什么是Appium?
Appium是一个免费分发的开源移动应用UI测试框架。
2) 列出Appium的能力?
应用能力包括
- 测试网站
- 为原生和混合移动自动化提供跨平台
- 支持JSON有线协议
- 不需要重新编译App
- 支持对物理设备和类似设备或仿真器进行自动化测试
- 它不依赖于移动设备
3) 列出使用Appium的前提条件?
使用Appium的先决条件是
- ANDROID SDK
- JDK
- TestNG
- Eclipse
- Selenium Server JAR
- Webdriver Language Binding Library
- APPIUM for Windows
- js
4) 列出使用Appium的限制?
- Appium不支持测试低于4.2的Android版本
- 对混合应用程序测试的支持有限。例如,不可能测试应用程序从网络应用程序到本机应用程序的切换动作,反之亦然
- 不支持在Microsoft Windows上运行Appium Inspector
5) 说明如何在移动应用中查找DOM元素或XPath?
要查找DOM元素,使用“UIAutomateviewer”查找Android应用程序的DOM元素。
6) 讲解Appium的设计理念。
- Appium是一个使用Node.js平台编写的“HTTP服务器”,使用Webdriver JSON有线协议驱动iOS和Android会话。因此,在初始化Appium Server之前,必须在系统上预安装Node.js
- 下载并安装Appium后,就会在我们的机器上设置一个服务器,该服务器公开一个睡觉应用编程接口
- 它接收来自客户端的连接和命令求,并在移动设备(Android/iOS)上执行该命令
-
它使用HTTP响应进行响应。再一次,为了执行这个求,它使用移动测试自动化框架来框架,比如
- 适用于iOS的Apple Instruments(Instruments仅在装有OS X v10.5和更高版本的Xcode 3.0或更高版本中提供)
- UIAutomator for Android API级别16或更高
- 适用于Android API级别15或更低级别的Selendroid
7) Appium支持什么语言?
Appium支持任何支持HTTP求语言,如Java、带有Node.js的JavaScript、Python、Ruby、PHP、Perl等。
8) 说明Appium的利弊?
优点:
- 对于与平台无关的程序员来说,他正在自动化(Android或iOS)所有的复杂性将保留在单个Appium服务器下
- 它为跨平台移动测试打开了大门,这意味着相同的测试可以在多个平台上运行
- Appium不需要在应用程序中添加额外的组件来使其自动化友好
- 它可以自动执行混合、Web和原生移动应用程序
缺点:
- 使用Appium可以同时在多个iOS模拟器上运行脚本
- 它使用UIAutomator for Android Automation,它只支持Android SDK平台,API 16或更高版本,为了支持较旧的API,他们使用了另一个名为Selendroid的开源库
9) 解释什么是APPIUM INSPECTOR?
与Selenium IDE记录和回放工具类似,Appium有一个“检查器”来记录和回放。它记录和播放本机应用程序,但是,Appium Inspector不支持Windows,并且在其选项中使用UIAutomator查看器。
10) 提到编写Appium测试的基本要求是什么?
为了编写需要的Appium测试,
- 驱动客户端:Appium像驱动用户一样驱动移动应用程序。使用客户端库编写Appium测试,这些测试包装测试步骤并通过HTTP发送到Appium服务器。
- Appium会话:必须首先初始化一个会话,因为这样的Appium测试是在会话中进行的。完成一个会话的自动化后,可以结束该会话并等待另一个会话
- 所需功能:要初始化Appium会话,需要定义某些称为“所需功能”的参数,如PlatformName、PlatformVersion、DeviceName等。它指定了需要从Appium服务器实现的自动化类型。
- 驱动程序命令:可以使用大量富于表现力的命令词汇表来编写测试步骤。
11) 提到使用Appium可能会遇到什么错误?
在Appium中可能面临的错误包括
- 错误1:需要以下所需功能,但未提供:设备名称、平台名称 (The following desired capabilities are needed but not provided: Device Name, platformName)
- 错误2:找不到ADB( Could not find adb. Please set the ANDROID_HOME environment variable with the Android SDK root directory path)。使用Android SDK根目录路径设置Android_HOME环境变量
- 错误3:openqa.selenium.SessionNotCreatedException:无法创建新会话
- 错误4:如何在移动应用程序中查找DOM元素或XPath?
12) 是否需要一台服务器计算机来在Appium上运行测试?
不需要,不需要服务器机器就可以在Appium上运行测试。Appium促进了两层架构,其中测试机器连接到测试,可以在运行测试的同一台机器上运行Appium。
13) 当我使用Appium测试时,是否可以使用Javascript与我的应用程序交互?
是的,可以在使用Javascript时与App交互。当命令在Appium上运行时,服务器会将脚本发送到应用程序,封装成匿名函数以供执行。
14) 提到使用Appium测试最困难的场景是什么?
用Appium测试最困难的场景是数据交换。
15) 使用Appium时,我可以在多线程环境中运行测试吗?
是的,可以在多线程环境中运行测试,但是必须确保在同一个Appium服务器上同时运行不超过一个测试。
16) 在Android中,是否需要应用程序的.apk来自动使用Appium,或者是否也需要在我的工作区中使用应用程序?
在Android中,只需要.apk文件就可以自动使用Appium。
17) 解释什么是Appium Package Master?如何创建包?
Appium Package Master是一套管理和创建Appium包的工具。例如,要创建包,可以使用以下代码
# using es7/babe1
Gulp create-package –n <package-name>
#regular es5
Gulp create-package —nobabe1 –n <package-name>
包将在out/
18) 解释Appium如何支持测试框架?
Appium不支持测试框架,因此没有必要支持它们。Appium可以与想要的任何框架一起使用。