eclipse+appium+AndroidSDK 安卓自动化测试环境搭建
2017-12-28 11:35
1031 查看
网上有很多环境搭建的教程,搭建方式、使用工具都各有不同,很多只是说了搭建的步骤并没有说明具体某个配置是做什么用的,使得新手搭建环境时一头雾水。
下面说一下我自己在win10搭建环境的过程:
先普及一下appium的工作原理,不然大家很难理解环境为什么这么搭建,以及为什么需要这些工具:
首先Appium是一个开源、跨平台的测试框架,可以用来测试原生及混合的移动端应用。Appium是C/S结构,支持Selenium WebDriver支持的所有语言,如java、Object-C、JavaScript、Php、Python、Ruby、C#。
Appium支持IOS、Android及FirefoxOS平台。Appium使用WebDriver的json wire协议,来驱动Apple系统的UIAutomation库、Android系统的UIAutomator框架。
通俗的说就是,我们写的代码通过client端的lib jar包转化成JSON wire格式的报文发送给Appium Server,Appium Server通过HTTP协议和手机端建立一个session,之后通过UIAutomator来操作手机端
所以我们需要安装或者配置的东西其实很简单:
1. Client lib jar
2. Android SDK
3. Appium Server
为什么安装 Android SDK那 ,因为Android SDK是Appium运行的环境需要,安装SDK又需要安装JDK。
所以安装的整体流程如下:
安装好之后需要配置环境变量
变量名:ANDROID_HOME
变量值:D:\android\android-sdk-windows
设置:PATH
变量值:;%ANDROID_HOME%\platform-tools;%ANDROID_HOME%\tools;
1)Node安装
网上很多教程上来就讲怎么安装Node.js,让人一头雾水。其实安装Node.js的目的是为了安装npm,一个通过命令行自动安装软件的程序,之后可以通过命令行的方式安装appium server,具体操作如下
(1)下载地址:https://nodejs.org/ 并安装
(2)验证是否安装成功:cmd窗口—输入npm,即安装成功
若不成功,可以试试管理员运行CMD 或者重启电脑
之后可以命令行运行:
此方法适用于mac或者Linux等经常用命令行操作的朋友,新手不适合推荐,安装完成之后的appium server是不带GUI的。
2)直接安装GUI的Appium Desktop
https://github.com/appium/appium-desktop/releases/tag/v1.2.7
安装最新版就好,不必安装Node和Appium server。
创建好Maven之后,在pom.xml中添加dependency(自动引入jar包的语句)
引入的selenium-java是java的webdriver client lib,因为appium是通过selenium webdriver来扩展语音的,所以selenium是必须添加的,如果你用的是其他语言,请参照github上的官方例子:https://github.com/appium/sample-code/tree/master/sample-code/examples
至此环境已经搭建完毕。
下面说一下我自己在win10搭建环境的过程:
先普及一下appium的工作原理,不然大家很难理解环境为什么这么搭建,以及为什么需要这些工具:
首先Appium是一个开源、跨平台的测试框架,可以用来测试原生及混合的移动端应用。Appium是C/S结构,支持Selenium WebDriver支持的所有语言,如java、Object-C、JavaScript、Php、Python、Ruby、C#。
Appium支持IOS、Android及FirefoxOS平台。Appium使用WebDriver的json wire协议,来驱动Apple系统的UIAutomation库、Android系统的UIAutomator框架。
通俗的说就是,我们写的代码通过client端的lib jar包转化成JSON wire格式的报文发送给Appium Server,Appium Server通过HTTP协议和手机端建立一个session,之后通过UIAutomator来操作手机端
所以我们需要安装或者配置的东西其实很简单:
1. Client lib jar
2. Android SDK
3. Appium Server
为什么安装 Android SDK那 ,因为Android SDK是Appium运行的环境需要,安装SDK又需要安装JDK。
所以安装的整体流程如下:
1.安装Java JDK
JDK网上的教程太多了,安装之后配置环境变量即可,安装最新的就行2.安装Android SDK
http://android-doc.com/androidstudio/2017/1117/6178.html安装好之后需要配置环境变量
变量名:ANDROID_HOME
变量值:D:\android\android-sdk-windows
设置:PATH
变量值:;%ANDROID_HOME%\platform-tools;%ANDROID_HOME%\tools;
3.安装Appium Server
两种方式:1)Node安装
网上很多教程上来就讲怎么安装Node.js,让人一头雾水。其实安装Node.js的目的是为了安装npm,一个通过命令行自动安装软件的程序,之后可以通过命令行的方式安装appium server,具体操作如下
(1)下载地址:https://nodejs.org/ 并安装
(2)验证是否安装成功:cmd窗口—输入npm,即安装成功
若不成功,可以试试管理员运行CMD 或者重启电脑
之后可以命令行运行:
> npm install -g appium # get appium > npm install wd # get appium client > appium & # start appium
此方法适用于mac或者Linux等经常用命令行操作的朋友,新手不适合推荐,安装完成之后的appium server是不带GUI的。
2)直接安装GUI的Appium Desktop
https://github.com/appium/appium-desktop/releases/tag/v1.2.7
安装最新版就好,不必安装Node和Appium server。
4.创建Eclipse Maven项目
Maven是一个自动构建工具,可以自动打包、设置运行的规则等等好多功能,如果你不会用Maven先baidu一下Maven在Eclipse中的使用。创建好Maven之后,在pom.xml中添加dependency(自动引入jar包的语句)
<dependencies> <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>3.8.1</version> </dependency> <!-- https://mvnrepository.com/artifact/io.appium/java-client --> <dependency> <groupId>io.appium</groupId> <artifactId>java-client</artifactId> <version>6.0.0-BETA2</version> </dependency> </dependencies>
引入的selenium-java是java的webdriver client lib,因为appium是通过selenium webdriver来扩展语音的,所以selenium是必须添加的,如果你用的是其他语言,请参照github上的官方例子:https://github.com/appium/sample-code/tree/master/sample-code/examples
至此环境已经搭建完毕。
5.第一个测试例子
import org.openqa.selenium.*; import org.openqa.selenium.remote.DesiredCapabilities; import io.appium.java_client.AppiumDriver; import io.appium.java_client.android.AndroidDriver; import java.net.MalformedURLException; import java.net.URL; public class CalculatorTest { private static RemoteWebDriver CalculatorSession = null; private static WebElement CalculatorResult = null; @BeforeClass public static void setup() { try { DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setCapability("deviceName", "Android Emulator"); capabilities.setCapability("automationName", "Appium"); capabilities.setCapability("platformName", "Android"); capabilities.setCapability("platformVersion", "5.0"); capabilities.setCapability("appPackage", "com.android.calculator2"); capabilities.setCapability("appActivity", ".Calculator"); //如果是安卓虚拟机,4723不好使的话要改成虚拟机进程的PID,可以打开任务管理器查看进程详细信息来获得,安卓虚拟机的设置也比较麻烦,请见我后续博客 //如果是手机,4723要改成4724 CalculatorSession.manage().timeouts().implicitlyWait(2, TimeUnit.SECONDS); CalculatorSession.findElementByXPath("//Button[starts-with(@Name, \"Menu\")]").click(); CalculatorSession.findElementByXPath("//ListItem[@Name=\"Standard Calculator\"]").click(); CalculatorSession.findElementByName("Clear").click(); CalculatorSession.findElementByName("Seven").click(); CalculatorResult = CalculatorSession.findElementByName("Display is 7 "); Assert.assertNotNull(CalculatorResult); }catch(Exception e){ e.printStackTrace(); } finally { } } @Before public void Clear() { CalculatorSession.findElementByName("Clear").click(); Assert.assertEquals("Display is 0 ", CalculatorResult.getText()); } @AfterClass public static void TearDown() { CalculatorResult = null; if (CalculatorSession != null) { CalculatorSession.quit(); } CalculatorSession = null; } @Test public void Addition() { CalculatorSession.findElementByName("One").click(); CalculatorSession.findElementByName("Plus").click(); CalculatorSession.findElementByName("Seven").click(); CalculatorSession.findElementByName("Equals").click(); Assert.assertEquals("Display is 8 ", CalculatorResult.getText()); } @Test public void Combination() { CalculatorSession.findElementByName("Seven").click(); CalculatorSession.findElementByName("Multiply by").click(); CalculatorSession.findElementByName("Nine").click(); CalculatorSession.findElementByName("Plus").click(); CalculatorSession.findElementByName("One").click(); CalculatorSession.findElementByName("Equals").click(); CalculatorSession.findElementByName("Divide by").click(); CalculatorSession.findElementByName("Eight").click(); CalculatorSession.findElementByName("Equals").click(); Assert.assertEquals("Display is 8 ", CalculatorResult.getText()); } @Test public void Division() { CalculatorSession.findElementByName("Eight").click(); CalculatorSession.findElementByName("Eight").click(); CalculatorSession.findElementByName("Divide by").click(); CalculatorSession.findElementByName("One").click(); CalculatorSession.findElementByName("One").click(); CalculatorSession.findElementByName("Equals").click(); Assert.assertEquals("Display is 8 ", CalculatorResult.getText()); } @Test public void Multiplication() { CalculatorSession.findElementByName("Nine").click(); CalculatorSession.findElementByName("Multiply by").click(); CalculatorSession.findElementByName("Nine").click(); CalculatorSession.findElementByName("Equals").click(); Assert.assertEquals("Display is 81 ", CalculatorResult.getText()); } @Test public void Subtraction() { CalculatorSession.findElementByName("Nine").click(); CalculatorSession.findElementByName("Minus").click(); CalculatorSession.findElementByName("One").click(); CalculatorSession.findElementByName("Equals").click(); Assert.assertEquals("Display is 8 ", CalculatorResult.getText()); } }
相关文章推荐
- Eclipse+ADT+Android SDK 搭建安卓开发环境
- Eclipse+ADT+Android SDK 搭建安卓开发环境
- 安卓学习(1)——搭建安卓开发环境:Eclipse+ADT+Android SDK
- Eclipse+ADT+Android SDK 搭建安卓开发环境
- Eclipse+ADT+Android SDK 搭建安卓开发环境
- MAC 搭建自动化测试环境(基于Appium+python+ios/android+unnitest+HTMLTestRunner)(一)
- android开发1:安卓开发环境搭建(eclipse+jdk+sdk)
- Eclipse+ADT+Android SDK 搭建安卓开发环境
- Eclipse+ADT+Android SDK 搭建安卓开发环境
- Eclipse+ADT+Android SDK 搭建安卓开发环境
- android开发1:安卓开发环境搭建(eclipse+jdk+sdk)
- APP自动化(1)——搭建Appium自动化测试平台环境(基于python&android)
- 搭建Eclipse+ADT+Android SDK 安卓开发环境
- Eclipse+ADT+Android SDK搭建安卓开发环境
- Eclipse+ADT+Android SDK 搭建安卓开发环境
- 搭建Eclipse+ADT+Android SDK 安卓开发环境
- Appium 做Android 自动化测试环境搭建+示例代码运行