文档章节

Android自动化测试工具Appium环境搭建

孟飞阳
 孟飞阳
发布于 2016/07/05 19:11
字数 1399
阅读 347
收藏 1

1、搭建Android环境

http://blog.csdn.net/jlminghui/article/details/39582895

注:需要设置系统变量“ANDROID_HOME”。

2、安装Node.js

http://www.nodejs.org/download/

下载相关操作系统的版本

安装过程,一路“Next”。

 

3、安装Appium

(1)下载地址:http://appium.io/ 下载完毕后解压到pc本地,将压缩包里有appium.cmd文件的路径设置到环境变量path中。

(2)进入命令行,输入appium-doctor 

 

另外也可在线安装(可选,网络不好还是选上面的好些)

(1)进入命令行

(2)输入命令:npm install -g appium

注:翻墙下载比较靠谱

(3)等待更新完毕

(4)安装后验证:appium-doctor

 

4、创建虚拟机或使用实际设备

创建一个4.4.2的虚拟机

不熟悉这块的朋友参考:http://blog.csdn.net/jlminghui/article/details/39582895

 

5、创建Java工程(Eclipse)

 推荐使用maven工程,直接可以maven导入。方法如下

1.创建一个maven工程

2.百度maven中央仓库,在中央仓库搜索selenium、appium、junit,找到对应的依赖加入到pom.xml,就可以不用再去对应的官网下载包了,又麻烦又慢

<dependencies>  
        <dependency>  
            <groupId>org.seleniumhq.selenium</groupId>  
            <artifactId>selenium-server</artifactId>  
            <version>2.48.2</version>  
        </dependency>  
        <dependency>  
            <groupId>org.seleniumhq.selenium</groupId>  
            <artifactId>selenium-java</artifactId>  
            <version>2.48.2</version>  
        </dependency>  
        <dependency>  
            <groupId>io.appium</groupId>  
            <artifactId>java-client</artifactId>  
            <version>3.2.0</version>  
        </dependency>  
        <dependency>  
            <groupId>junit</groupId>  
            <artifactId>junit</artifactId>  
            <version>4.12</version>  
        </dependency>  
    </dependencies>  

一般方法
(1)导入Selenium类库

http://selenium-release.storage.googleapis.com/2.44/selenium-java-2.44.0.zip

http://selenium-release.storage.googleapis.com/2.44/selenium-server-standalone-2.44.0.jar

(确认2014.11.14有效,如无效请访问http://docs.seleniumhq.org/download/ 进行下载 )

 

注:需要导入两个,一个是客户端,一个是服务端,服务端库不导入会导致运行时报错。

(2)导入Appium类库

https://search.maven.org/remotecontent?filepath=io/appium/java-client/1.2.1/java-client-1.2.1.jar 

(确认2014.11.14有效,如无效请访问http://appium.io/downloads.html  进行下载 )

注:此处如果选择下载最新的2.0以上的版本,会导致编译new AppiumDriver时报错。解决办法见:

http://blog.csdn.net/zhubaitian/article/details/39717889 

 

 

6、运行Appium示列

(1)下载示例程序

https://github.com/appium/sample-code/tree/master/sample-code/apps/ContactManager

上面链接中下载ContactManager.apk

(点击下方的RAW按钮下载)

并将该apps放到当前项目的apps目录下(目录自行创建)

(2)下载示例程序测试

地址:https://github.com/appium/sample-code/tree/master/sample-code/examples/java/junit/src/test/java/com/saucelabs/appium

java文件为“AndroidContactsTest.java

(点击下方的RAW按钮下载)

内容经过更改如下:

package com.Demo;  
   
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.WebElement;  
import org.openqa.selenium.remote.CapabilityType;  
import org.openqa.selenium.remote.DesiredCapabilities;  
   
import java.io.File;  
import java.net.URL;  
import java.util.List;  
   
public class AppDemo {  
    private AppiumDriver driver;  
   
    @Before  
    public void setUp() throws Exception {  
        // set up appium  
        File classpathRoot = new File(System.getProperty("user.dir"));  
        File appDir = new File(classpathRoot, "apps");  
        File app = new File(appDir, "ContactManager.apk");  
        DesiredCapabilities capabilities = new DesiredCapabilities();  
        capabilities.setCapability(CapabilityType.BROWSER_NAME, "");  
        capabilities.setCapability("platformName", "Android");  
        capabilities.setCapability("deviceName","Android Emulator");  
        capabilities.setCapability("platformVersion", "4.4");  
        capabilities.setCapability("app", app.getAbsolutePath());  
        capabilities.setCapability("appPackage", "com.example.android.contactmanager");  
        capabilities.setCapability("appActivity", ".ContactManager");  
        driver = new AppiumDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);  
    }  
   
    @After  
    public void tearDown() throws Exception {  
        driver.quit();  
    }  
   
    @Test  
    public void addContact(){  
        WebElement el = driver.findElement(By.name("Add Contact"));  
        el.click();  
        List<WebElement> textFieldsList = driver.findElementsByClassName("android.widget.EditText");  
        textFieldsList.get(0).sendKeys("Some Name");  
        textFieldsList.get(2).sendKeys("Some@example.com");  
        driver.swipe(100, 500, 100, 100, 2);  
        driver.findElementByName("Save").click();  
    }  
}  

(3)启动android4.4.2虚拟机

(4)命令行启动后输入:appium 

(5)appium启动到对应设备:appium -a 127.0.0.1 -p4723 -Uemulator-5554 (-a表示ip,-p表示端口,默认都是4723,-U表示设备的udid,可以通过adb devices查看)

(6)项目右键>“Run As”>“JUnit Test”(选择Eclipse JUnit Launcher)

       以上步骤确认可以运行成功,但由于笔者也是刚接触Appium,可能存在遗漏,也请大家帮忙指出,另外也可以使用maven和相关Eclipse插件会更方便些,网上例子很多可自行查找。

7、Appium遇到问题



问题一:
问题org.openqa.selenium.remote.UnreachableBrowserException: Could not start a new session. Possible causes are invalid address of the remote server or browser start-up failure.

解决办法:
(1)启动appium

(2)运行cmd 输入 adb devices  查看UDID 如图:

(3)再在cmd中输入 appium -a 127.0.0.1 -p4723 -Uemulator-5554 (-a表示ip,-p表示端口,默认都是4723,-U表示设备的udid 可以通过appium -h查看更多命令)

(4)如果如下图所示 就表示 appium服务启动成功了,注意这个窗口不要关闭 因为这是appium的服务 关了就关了服务,后面过程无法执行,而且这个窗口也是 日志输出的窗口用于排错。


问题二:
问题:org.openqa.selenium.SessionNotCreatedException: A new session could not be created.
(Original error: Device ZX1C622BU3 was not in the list of connected devices)
(WARNING: The server did not provide any stacktrace information)

解决办法:可能手机驱动未安装成功,虽然在adb devices中可以正常查看到devices


问题三:
问题:org.openqa.selenium.SessionNotCreatedException: A new session could not be created. (Original error: Waited 20 secs for selendroid server and it never showed up)

解决办法:
查看包的签名的和Activity
例如:APP从I5版本后启动界面的capabilities.setCapability("appActivity", ".CordovaApp");
从I5版本后Acitivity变成了MainActivity
capabilities.setCapability("appActivity",".MainActivity");// 被测app的Activity类


问题四:
org.openqa.selenium.WebDriverException: An unknown server-side error occurred while processing the command. (WARNING: The server did not provide any stacktrace information)

解决方法:
查看设备上是否安装Selendroid,或者升级Selendroid

IOS问题五:
org.openqa.selenium.WebDriverException: An unknown server-side error occurred while processing the command. (WARNING: The server did not provide any stacktrace information)
 

解决办法:IOS_webkit_debug_proxy –c –[Udid] -d

 

问题六

error: Couldn't start Appium REST http interface listener. Requested port is already in use. Please make sure there's no other instance of Appium running already.

因为端口被node占用,可以用如下退出node

找出PID命令::netstat -ano|findstr "7922"   (这个4723是被占用的端口,我们需要先找该占用该端口程序的PID)

停止PID命令:taskkill /pid 8828 /f

8、相关工具

工具一

        SDK\tools下的:uiautomatorviewer

        作用:查看元素ID、Name、坐标

工具二

        SDK\build-tools\23.0.0下的:aapt

        作用:查看启动包名和首页ACTIVITY

本文转载自:http://blog.csdn.net/xieyuemin/article/details/49617803

孟飞阳
粉丝 217
博文 1050
码字总数 564830
作品 5
朝阳
个人站长
私信 提问
Appium基础篇1-如何在windows上安装Appium环境

终于开始写手机自动化测试相关的文章了,本人比较熟悉Selenium Web自动化测试。其实Selenium也支持手机端的自动化测试,最近越来越多公司手机端自动化测试采用Appium,所以作为一个懂点代码和...

xiaomin0322
07/02
17
0
搭建基于C#和 Appium 的 Android自动测试环境

移动端的自动化测试框架主要就是UiAutomator,Espresso,Robotium和功能最强大,也是比较热门的框架Appium 如果想做手机端的自动化测试,Appium是首选的测试框架,因为网上使用的人多,资料丰...

程序猿拿Q
2018/11/12
187
0
Appium自动化测试系列1 - Appium环境的安装与配置

之前一直使用Robotium做为Android App测试框架的底层基础,受限于跨进程,以及控件加载的一些限制,很多特殊场景无法覆盖,决定尝试久闻的Appium(它也差不多成熟了),顺便做个笔记,方便其...

冬吃萝卜
2015/01/27
26K
0
Android SDK + Appium 环境搭建

一、JDK 安装 说明:JDK是包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具,所以必须最先安装。 链接: https://pan.baidu.com/s/1NfNK_K7vukFMfi8y7fNtzQ 密码: 6aqu 安装:直接双击下一...

LeoZhanggg
2018/09/17
0
0
Windows下部署Appium教程(Android App自动化测试框架搭建)

----------------------------------------------appium的一些基本概念---------------------------------------------- appium的核心其实是一个暴露了一系列REST API的server。 这个server的......

outcat
2015/08/12
11.8K
26

没有更多内容

加载失败,请刷新页面

加载更多

Spring Boot + Mybatis-Plus 集成与使用(二)

前言: 本章节介绍MyBatis-Puls的CRUD使用。在开始之前,先简单讲解下上章节关于Spring Boot是如何自动配置MyBatis-Plus。 一、自动配置 当Spring Boot应用从主方法main()启动后,首先加载S...

伴学编程
昨天
7
0
用最通俗的方法讲spring [一] ──── AOP

@[TOC](用最通俗的方法讲spring [一] ──── AOP) 写这个系列的目的(可以跳过不看) 自己写这个系列的目的,是因为自己是个比较笨的人,我曾一度怀疑自己的智商不适合干编程这个行业.因为在我...

小贼贼子
昨天
7
0
Flutter系列之在 macOS 上安装和配置 Flutter 开发环境

本文为Flutter开发环境在macOS下安装全过程: 一、系统配置要求 想要安装并运行 Flutter,你的开发环境需要最低满足以下要求: 操作系统:macOS(64位) 磁盘空间:700 MB(不包含 IDE 或其余...

過愙
昨天
6
0
OSChina 周六乱弹 —— 早上儿子问我他是怎么来的

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @凉小生 :#今日歌曲推荐# 少点戾气,愿你和这个世界温柔以待。中岛美嘉的单曲《僕が死のうと思ったのは (曾经我也想过一了百了)》 《僕が死の...

小小编辑
昨天
2.7K
16
Excption与Error包结构,OOM 你遇到过哪些情况,SOF 你遇到过哪些情况

Throwable 是 Java 中所有错误与异常的超类,Throwable 包含两个子类,Error 与 Exception 。用于指示发生了异常情况。 Java 抛出的 Throwable 可以分成三种类型。 被检查异常(checked Exc...

Garphy
昨天
42
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部