Appium自动化测试Android

  • Appium自动化测试Android
    • Appium相关环境配置
        • 配置jdk和Android SDK
        • 配置nodejs
        • 安装配置appium
    • Appium测试Demojava推荐使用PythonJava的配置相当复杂但是Java可供操作的选项多一点一般情况下Python足够使用了后面会补Python
        • 首先需要创建一个Java Project这里我用eclipse来作为我的IDE
        • 然后新建两个文件夹apps和lib这里名字可以随便取只是约定俗成后大家都这么写如下图
        • 将需要测试的apk文件添加进apps文件夹和需要用到的jar包添加进lib文件夹
        • 新建一个Java文件并编写测试代码
    • Appium测试DemoPython27的版本也可以我这里使用的35
        • 首先下载appium的依赖包
        • 编写自己的测试代码
        • 开启Appium并执行脚本语句
    • TIPS

Appium相关环境配置

SETUP(官方给的配置步骤,其中有些可以省略)
1. Install node.js (v.0.12 or greater). Use the installer from nodejs.org.
2. Install appium-doctor in order to check your system: npm install appium-doctor -g. Then run by typing appium-doctor.
3. Install the Android SDK. You will need to run the ‘android’ tool (included in the SDK, in the tools folder) and make sure you have an API Level 17 or greater API installed. Set ANDROID_HOME to be your Android SDK path and add the tools and platform-tools folders to your PATH variable.
4. Install the Java JDK and set JAVA_HOME to your JDK’s bin folder.
5. Install Apache Ant or use the one that comes with the Android Windows SDK in the eclipse\plugins folder. Be sure to add the folder containing Ant to your PATH variable.
6. Install Apache Maven and set the M2HOME and M2 environment variables. Set M2HOME to the directory maven is installed in, and set M2 to %M2HOME%\bin. Add the path you used for M2 to your PATH.
7. Install Git Be sure to install Git for windows to run in the regular command prompt.
8. Install cURL.
Now that you’ve downloaded everything, if you’re running from source, run the following in the folder where you cloned appium:
rm -rf node_modules
npm install

source:http://appium.io/slate/en/1.5/?java#limitations


配置jdk和Android SDK

如果在你的机器上开发过Android项目那么这里就不需要配置jdk和Android SDK了。需要检查你的环境变量,需要有JAVA_HOMEANDROID_HOME,并且将这两个添加进path里面。
Appium自动化测试Android_第1张图片

点击上图中的Path,然后点击编辑。然后添加,如下图

Appium自动化测试Android_第2张图片

如果你在电脑上面没有安装过jdk和Android SDK,那么你需要先安装这两个东西。JDK下载,Android SDK下载

note:检查是否安装好,在DOS窗口里面输入javac -versionjava -version查看版本号,如果不报错则说明环境变量配置好了。这里的Android SDK的环境变量以防万一,可以加上,如上图中的ANDROID_SDK,里面的路径分别为C:\Android\sdk\platforms;C:\Android\sdk\tools;C:\Android\sdk\platform-tools,并将ANDROID_SDK添加进Path里面。
Appium自动化测试Android_第3张图片


配置nodejs

如果你装过nodejs那么这里需要检查你的nodejs和npm的版本和环境变量是否配好,如果没装过,则先下载安装,然后配置环境变量,在安装的时候可以勾选自动配置环境变量。nodejs下载地址
配置好后如下图
Appium自动化测试Android_第4张图片

note:检查是否配置好,在DOS窗口里面分别输入node -vnpm -v查看对应的版本号,如果不报错则表示环境变量配置好了。
Appium自动化测试Android_第5张图片


安装配置appium

这里有多种安装appium的方式一种是,在你的nodejs环境变量配置好后,打开DOS窗口,输入npm install –g appium,这种方法我多次使用多次失败。所以我选择第二种,去appium的官网下载安装。appium下载,appium官网(dmg后缀是mac机器对应的安装文件,Zip是windowns对应的安装文件)
Appium自动化测试Android_第6张图片
note: 安装完appium后,我们可以查看我们以上所有的环境变量是否都配置正确了。在DOS窗口下输入appium-doctor查看所有的环境是否配置好(这里需要使用命令npm install -g appium-doctor,或者直接从源码位置打开)。
Appium自动化测试Android_第7张图片

在DOS窗口下输入appium可以打开appium,如果打不开提示需要.Net Frameworkn框架的话,就去下载对应的框架安装然后再尝试打开appium。

Appium测试Demo(java,推荐使用Python,Java的配置相当复杂,但是Java可供操作的选项多一点,一般情况下Python足够使用了,后面会补Python)

source code

首先需要创建一个Java Project,这里我用eclipse来作为我的IDE

Appium自动化测试Android_第8张图片
Appium自动化测试Android_第9张图片

然后新建两个文件夹appslib,(这里名字可以随便取,只是约定俗成后大家都这么写),如下图

Appium自动化测试Android_第10张图片
我这里之所以有Referenced Libraries是因为我的lib下的jar包已经添加进引用了。新建的项目应该是没有的。

将需要测试的apk文件添加进apps文件夹,和需要用到的jar包添加进lib文件夹。

我这里提供两个apk,一个是官方提供的,一个是我自己写的。
jar包则需要去官网下,这里的类库分为两种一种是Selenum2类库(需要其他版本则进这里),
Appium自动化测试Android_第11张图片
另一种是 Appium类库
Appium自动化测试Android_第12张图片
下载完成后,将所有的jar包添加进我们的lib文件夹,并全部引用(添加进编译路径)。
note:注意的是selenum下载下来的压缩包,需要解压后,(需要注意的是,解压后应该是有一个jar文件和一个lib文件夹,jar文件和lib里面的所有jar包都添加进工程的lib文件夹,这里用到的jar包需要是同一压缩包下面的,不然版本号不匹配会报错);添加编译路径是可以选中所有的jar包然后一起右键添加的(右键-->Build Path-->Add to Build Path)。
Appium自动化测试Android_第13张图片

新建一个Java文件,并编写测试代码

新建一个Java class,名字自己写,Java里面的代码如下,

package com.hust.damnicomniplus;import java.io.File;import java.net.URL;import java.util.List;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.ie.InternetExplorerDriver;import org.openqa.selenium.remote.CapabilityType;import org.openqa.selenium.remote.DesiredCapabilities;import io.appium.java_client.android.AndroidDriver;public class AppiumTest {    private AndroidDriver driver;     @Before    public void setUp() throws Exception {        //设置apk的路径        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.2");        //设置apk路径        capabilities.setCapability("app", app.getAbsolutePath());         //设置可支持编码,可直接输入中文        capabilities.setCapability("unicodeKeyboard", true);        capabilities.setCapability("resetKeyboard", true);        //设置网络选项,可选项        capabilities.setCapability(InternetExplorerDriver.IE_ENSURE_CLEAN_SESSION, true);        //设置app的主包名和主类名        capabilities.setCapability("appPackage", "com.example.android.contactmanager");        capabilities.setCapability("appActivity", ".ContactManager");        //初始化        driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);       }    @Test    public void addContact(){        WebElement el = driver.findElement(By.name("Add Contact"));        el.click();        List textFieldsList = driver.findElementsByClassName("android.widget.EditText");        textFieldsList.get(0).sendKeys("袁大毛");        textFieldsList.get(1).sendKeys("15648971455");        textFieldsList.get(2).sendKeys("[email protected]");        driver.swipe(100, 500, 100, 100, 2);        driver.findElementByName("Save").click();    }        @After    public void tearDown() throws Exception {        driver.quit();    }}

运行项目之前需要先打开appium,这里在DOS窗口下输入appium或者直接在开始菜单里面运行appium,如果只有一台设备这里直接运行就行,如果有多台设备则需要自己选中一台后运行(在Android logo里面选定)。(右上角的运行按钮
Appium自动化测试Android_第14张图片
之后运行项目,右键–>Run as Junit Test就行了。
Appium自动化测试Android_第15张图片
note:运行时如果报错,则显示为http连接等异常,则打开intent explorer–>设置按钮–>Internet 选项–>安全–>重置到默认(大概是这个意思)。然后重新打开appium,重新运行项目。这里不需要提前将测试的apk文件安装到手机

测试项目源码地址

Appium测试Demo(Python,2.7的版本也可以,我这里使用的3.5)

首先下载appium的依赖包

Dos窗口输入pip install appium-python-client,这个命令会下载四个依赖,分别是appium与Python交互配置的文件Appium_Python_Client-0.24-py3.5.egg-info、Python与appium通信的appium、真正参与测试的selenium、selenium的说明配置文件selenium-3.4.1.dist-info

Appium自动化测试Android_第16张图片

编写自己的测试代码

我这里代码如下

#!/usr/bin/env python3# -*- coding: utf-8 -*-from appium import webdrivercapabilities = {}# 测试平台,与测试设备名字,由于这里是真机,所以设备名字不生效capabilities['platformName'] = 'Android'capabilities['deviceName'] = 'Android Emulator'# 安卓测试版本,真机这里也不生效capabilities['platformVersion'] = '4.4.2'# 设置支持的编码,这样设置后可以输入中文capabilities['unicodeKeyboard'] = 'True'capabilities['resetKeyboard'] = 'True'# 设置APP的主包名和入口类capabilities['appPackage'] = 'com.example.android.contactmanager'capabilities['appActivity'] = '.ContactManager'# 初始化driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', capabilities)add = driver.find_element_by_name('Add Contact')add.click()textFieldsList = driver.find_elements_by_class_name('android.widget.EditText')textFieldsList[0].send_keys('袁大毛')textFieldsList[1].send_keys('15684457157')textFieldsList[2].send_keys('[email protected]')driver.swipe(100, 500, 100, 100, 2)# driver.find_element_by_name('Save').click()driver.quit()

开启Appium,并执行脚本语句

开启和上面Java一样,在DOS窗口直接输入appium后回车,或者在开始菜单里面找到appium打开,,如果打不开提示需要.Net Frameworkn框架的话,就去下载对应的框架安装然后再尝试打开appium。
如果只有一台设备这里直接运行就行,如果有多台设备则需要自己选中一台后运行(在Android logo里面选定)。(右上角的运行按钮
Appium自动化测试Android_第17张图片
然后运行Python脚本就行了。
note:运行时如果报错,则显示为http连接等异常,则打开intent explorer–>设置按钮–>Internet 选项–>安全–>重置到默认(大概是这个意思)。然后重新打开appium,重新运行项目。需要提前将测试的apk文件安装到手机

TIPS

  1. 这里测试的apk不一定是正式签名过得,debug版本的也行。
  2. 如果想测试其它非自己开发的apk,则可以借助Android SDK里面的uiautomatorviewer.bat工具。路径为SDK下面的tools文件夹下。
  3. 想学习更详细的appium测试,可以进testerhome
  4. appium官方也提供了相当多的文档

更多相关文章

  1. 阅读《Android 从入门到精通》(20)——图片视图
  2. android 仿微信群聊头像 合成图片
  3. Android Robotium搭建环境测试微信
  4. Android中播放GIF图片动画
  5. 2010.12.15——— android listView 显示图片
  6. Android拍照、相册选取、裁剪图片综合Demo
  7. Android 图片对比(图片相似度)代码
  8. android测试工具MonkeyRunner--google官网翻译

随机推荐

  1. 在Android里完美实现基站和WIFI定位
  2. Android 调用微信登陆、支付、分享,出现
  3. Android 分区挂载
  4. 130292015012 陈月凤 第一章作业
  5. 【Android】显示网络图片代码分析
  6. Android中Intent的使用示例
  7. Android 高级控件(二)
  8. Android 7.0 虚拟按键(NavigationBar)源码
  9. 以Android Library的方式使用 for
  10. 将 apk无线安装到 android 设备中的四种