appium环境的搭建
下载、安装JDK&配置Java环境变量
JDK下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html
配置环境变量:
1、右键我的电脑--属性--高级--环境变量
2、新建系统变量JAVA_HOME 和CLASSPATH
变量名:JAVA_HOME
变量值:C:\\Program Files\\Java\\jdk1.7.0
变量名:CLASSPATH
变量值:.;%JAVA_HOME%\\lib\\dt.jar;%JAVA_HOME%\\lib\\tools.jar;
3、选择“系统变量”中变量名为“Path”的环境变量,双击该变量,把JDK安装路径中bin目录的绝对路径,添加 到Path变量的值中,并使用半角的分号和已有的路径进行分隔。
变量名:Path
变量值:%JAVA_HOME%\\bin;%JAVA_HOME%\\jre\\bin;
验证配置是否成功:重新打开控制台输入:java -verison,如果显示Java版本信息表示安装成功。
下载、安装SDK、ADT&配置android环境变量
ADT:[http://developer.android.com/sdk/index.html](file:///D:/Users/dctang/Desktop/doc/ http:/developer.android.com/sdk/index.html)
配置环境变量: 1、右键我的电脑--属性--高级--环境变量
2、在系统变量域中新建ANDROID_HOME变量
变量名:ANDROID_HOME
变量值:E:\\appium\\adt-bundle-windows-x86_64-20131030\\sdk\\(根据实际情况而定)
3、选择“系统变量”中变量名为“Path”的环境变量,双击该变量
变量名:path
变量值:;%Android_Home%\\build-tools\\android-4.4;%Android_Home%\\tools;%Android_Home%\\platform-tools(注意:android-4.4要视情况而定)
最后结果如图:
ANDROID_HOME配置如下
系统变量Path配置如下:
下载、安装Appium
cmd版本
安装Node.js
1、配置环境变量:
右键我的电脑--属性--高级--环境变量—用户变量
变量名:Path
变量值:D:\\nodejs; d:\\Users\\lcding\\AppData\\Roaming\\npm
2、联网安装Appium 进入cmd命令行
输入: npm install –g appium 或者 npm --registry http://registry.cnpmjs.org install -g appium (推荐这种,npm的国内镜像)
如果需要装1.2.4:npm --registry http://registry.cnpmjs.org install -g appium@1.2.4
注:-g全局参数 多等几分钟,可以看到appium的版本1.xx.xx及安装目录
检查一下appium是否安装成功。 进入cmd命令行,输入appium 提示:Welcome to Appium 说明安装好了
检查appium所需的环境是否OK(这步很重要) 进入Cmd命令行,输入appium-doctor ,出现以下提示,All Checks were successful ,说明环境成功。
exe****版本
下载Windows版本的Appium地址:[https://bitbucket.org/appium/appium.app/downloads/](file:///D:/Users/dctang/Desktop/doc/ https:/bitbucket.org/appium/appium.app/downloads/)下载安装即可
注意:AppiumForWindow版本需要Microsoft .Net Framework 4.5.1支持,在安装Appium的过程中如果没有安装会提示用户安装并跳转到“.Net Framework”下载地址。
安装成功之后点击”Appium.exe”运行即可,运行界面如图:
appium实例:
新建mvn项目:
修改pom.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>APPUiTest</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<aspectj.version>1.8.10</aspectj.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.14.3</version>
</dependency>
<dependency>
<groupId>org.darkphoenixs</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.appium/java-client -->
<dependency>
<groupId>io.appium</groupId>
<artifactId>java-client</artifactId>
<version>7.0.0</version>
</dependency>
</dependencies>
</project>
代码:
初始化driver:
import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.android.AndroidElement;
import io.appium.java_client.remote.AndroidMobileCapabilityType;
import io.appium.java_client.remote.iosMobileCapabilityType;
import io.appium.java_client.remote.MobileCapabilityType;
import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import org.openqa.selenium.remote.DesiredCapabilities;
public class InitDriver {
public static void initDriver() throws Exception {
File app=new File("C:/Users/Desktop/zhihu.apk");
DesiredCapabilities caps=new DesiredCapabilities();
//deviceName是必须项,但是值可以随便写
caps.setCapability("deviceName", "moniqi");
//要安装的app路径,路径必须是服务端所在的电脑上存放的apk文件路径
caps.setCapability("app", app.getAbsolutePath());
//如果你的安卓是4.2以下,需要使用automationName指定Selendroid
//caps.setCapability("automationName", "Selendroid");
//使用appium的输入法,支持中文并隐藏键盘
caps.setCapability("unicodeKeyboard", true);
//将输入法重置回设备默认的输入法
caps.setCapability("resetKeyboard", true);
//不重签名app
caps.setCapability("noSign", true);
//设置driver超时时间,单位s
caps.setCapability("newCommandTimeout", 600);
//appPackage表示要启动的应用的包名
// caps.setCapability("appPackage", "com.zhihu.android");
// //appActivity表示要启动的应用的起始activity
// caps.setCapability("appActivity", "com.zhihu.android.app.ui.activity.MainActivity");
// //appWaitActivity,这个参数的值写的是app启动后真正的界面activity
caps.setCapability("appWaitActivity", "com.zhihu.android.app.ui.activity.MainActivity1");
//deviceReadyTimeout修改appium判断设备正常响应的超时时间,默认是5秒
caps.setCapability("deviceReadyTimeout",30);
//browserName手机web自动化的浏览器的名字
//caps.setCapability("browserName", "Chrome");
//udid表示指定连接某台设备
caps.setCapability("udid", "127.0.0.1:62001");
//caps.setCapability("noReset", false);
caps.setCapability("fullReset", true);
AndroidDriver<AndroidElement> driver=new AndroidDriver<AndroidElement>(
new URL("http://127.0.0.1:4723/wd/hub"), caps);
}
public static AndroidDriver<AndroidElement> initDriver1() throws Exception{
File app=new File("C:/Users/LXG/Desktop/zhihu.apk");
DesiredCapabilities caps=new DesiredCapabilities();
caps.setCapability(MobileCapabilityType.DEVICE_NAME, "xxx");
caps.setCapability(MobileCapabilityType.APP, app.getAbsolutePath());
caps.setCapability(MobileCapabilityType.AUTOMATION_NAME, "Appium");
caps.setCapability(MobileCapabilityType.UDID, "127.0.0.1:62001");
caps.setCapability(MobileCapabilityType.NEW_COMMAND_TIMEOUT, 600);
caps.setCapability(MobileCapabilityType.FULL_RESET, true);
caps.setCapability(AndroidMobileCapabilityType.APP_PACKAGE, "com.zhihu.android");
caps.setCapability(AndroidMobileCapabilityType.APP_ACTIVITY, "com.zhihu.android.app.ui.activity.MainActivity");
caps.setCapability(AndroidMobileCapabilityType.UNICODE_KEYBOARD, true);
caps.setCapability(AndroidMobileCapabilityType.RESET_KEYBOARD, true);
caps.setCapability(AndroidMobileCapabilityType.NO_SIGN, true);
AndroidDriver<AndroidElement> driver=new AndroidDriver<AndroidElement>(
new URL("http://127.0.0.1:4723/wd/hub"), caps);
return driver;
}
public static void main(String[] args) {
try {
InitDriver.initDriver();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
登录
public void login(){
AndroidElement ignore=driver.findElementById("com.zhihu.android:id/is_private");
ignore.click();
AndroidElement cancue=driver.findElementById("android:id/button3");
cancue.click();
AndroidElement login=driver.findElementById("com.zhihu.android:id/login_btn");
login.click(); }
}