SETUP(官方给的配置步骤,其中有些可以省略)
1. Install node.js (v.0.12 or greater). Use the installer from nodejs.org.
2. Installappium-doctor
in order to check your system:npm install appium-doctor -g
. Then run by typingappium-doctor
.
3. Install the Android SDK. You will need to run the ‘android’ tool (included in the SDK, in thetools
folder) and make sure you have an API Level 17 or greater API installed. SetANDROID_HOME
to be your Android SDK path and add thetools
andplatform-tools
folders to your PATH variable.
4. Install theJava JDK
and set JAVA_HOME to your JDK’sbin
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. SetM2HOME
to the directory maven is installed in, and setM2
to%M2HOME%\bin
. Add the path you used forM2
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
如果在你的机器上开发过Android项目那么这里就不需要配置jdk和Android SDK了。需要检查你的环境变量,需要有JAVA_HOME和ANDROID_HOME,并且将这两个添加进path里面。
点击上图中的Path,然后点击编辑。然后添加,如下图
如果你在电脑上面没有安装过jdk和Android SDK,那么你需要先安装这两个东西。JDK下载,Android SDK下载
note:检查是否安装好,在DOS窗口里面输入javac -version
和java -version
查看版本号,如果不报错则说明环境变量配置好了。这里的Android SDK的环境变量以防万一,可以加上,如上图中的ANDROID_SDK
,里面的路径分别为C:\Android\sdk\platforms;C:\Android\sdk\tools;C:\Android\sdk\platform-tools
,并将ANDROID_SDK
添加进Path里面。
如果你装过nodejs那么这里需要检查你的nodejs和npm的版本和环境变量是否配好,如果没装过,则先下载安装,然后配置环境变量,在安装的时候可以勾选自动配置环境变量。nodejs下载地址
配置好后如下图
note:检查是否配置好,在DOS窗口里面分别输入node -v
和npm -v
查看对应的版本号,如果不报错则表示环境变量配置好了。
这里有多种安装appium的方式一种是,在你的nodejs环境变量配置好后,打开DOS窗口,输入npm install –g appium
,这种方法我多次使用多次失败。所以我选择第二种,去appium的官网下载安装。appium下载,appium官网(dmg后缀是mac机器对应的安装文件,Zip是windowns对应的安装文件)
note: 安装完appium后,我们可以查看我们以上所有的环境变量是否都配置正确了。在DOS窗口下输入appium-doctor
查看所有的环境是否配置好(这里需要使用命令npm install -g appium-doctor
,或者直接从源码位置打开)。
在DOS窗口下输入appium
可以打开appium,如果打不开提示需要.Net Frameworkn框架的话,就去下载对应的框架安装然后再尝试打开appium。
source code
apps
和lib
,(这里名字可以随便取,只是约定俗成后大家都这么写),如下图
我这里之所以有Referenced Libraries
是因为我的lib下的jar包已经添加进引用了。新建的项目应该是没有的。
我这里提供两个apk,一个是官方提供的,一个是我自己写的。
jar包则需要去官网下,这里的类库分为两种一种是Selenum2类库(需要其他版本则进这里),
另一种是 Appium类库
下载完成后,将所有的jar包添加进我们的lib文件夹,并全部引用(添加进编译路径)。
note:注意的是selenum下载下来的压缩包,需要解压后,(需要注意的是,解压后应该是有一个jar文件和一个lib文件夹,jar文件和lib里面的所有jar包都添加进工程的lib文件夹,这里用到的jar包需要是同一压缩包下面的,不然版本号不匹配会报错);添加编译路径是可以选中所有的jar包然后一起右键添加的(右键-->Build Path-->Add to Build Path
)。
新建一个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里面选定)。(右上角的运行按钮)
之后运行项目,右键–>Run as Junit Test就行了。
note:运行时如果报错,则显示为http连接等异常,则打开intent explorer–>设置按钮–>Internet 选项–>安全–>重置到默认(大概是这个意思)。然后重新打开appium,重新运行项目。这里不需要提前将测试的apk文件安装到手机。
测试项目源码地址
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
我这里代码如下
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from appium import webdriver
capabilities = {}
# 测试平台,与测试设备名字,由于这里是真机,所以设备名字不生效
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()
开启和上面Java一样,在DOS窗口直接输入appium
后回车,或者在开始菜单里面找到appium打开,,如果打不开提示需要.Net Frameworkn框架的话,就去下载对应的框架安装然后再尝试打开appium。
如果只有一台设备这里直接运行就行,如果有多台设备则需要自己选中一台后运行(在Android logo里面选定)。(右上角的运行按钮)
然后运行Python脚本就行了。
note:运行时如果报错,则显示为http连接等异常,则打开intent explorer–>设置按钮–>Internet 选项–>安全–>重置到默认(大概是这个意思)。然后重新打开appium,重新运行项目。需要提前将测试的apk文件安装到手机。
uiautomatorviewer.bat
工具。路径为SDK下面的tools
文件夹下。