1:搭建环境
1.1:基本环境的搭建
Appium环境的搭建:https://blog.csdn.net/hujyhfwfh2/article/details/82925424
参见error参考:https://blog.csdn.net/hujyhfwfh2/article/details/82933164
1.2:测试环境是否搭建成功
Maven的pom.xml中需要导入下列依赖
<!-- https://mvnrepository.com/artifact/io.appium/java-client -->
<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-server --> |
测试代码如下
package com.AutoAPP.APP;
import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.android.AndroidElement;
import io.appium.java_client.remote.MobileCapabilityType;
import java.io.File;
import java.net.URL;
import org.openqa.selenium.remote.DesiredCapabilities;
public class AppTest {
public static void initDriver() throws Exception{
//zhihu APP在本地电脑的存放路径
File app=new File("C:\\Users\\Anndy\\Desktop\\11\\zhihu.apk");
DesiredCapabilities caps=new DesiredCapabilities();
//
caps.setCapability(MobileCapabilityType.DEVICE_NAME, "anything");
//这个仅仅安装APP的时候需要使用到
caps.setCapability(MobileCapabilityType.APP,app.getAbsoluteFile());
//http://127.0.0.1:4723/wd/hub 为Appium的URL连接
AndroidDriver<AndroidElement> driver
=new AndroidDriver<AndroidElement>(new URL("http://127.0.0.1:4723/wd/hub"), caps);
}
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
initDriver();
}
}
2:Capabilities参数详解
在使用之前必须创建对象:DesiredCapabilities caps=new DesiredCapabilities();
2.1:MobileCapabilityType.DEVICE_NAME 设备名称
caps.setCapability(MobileCapabilityType.DEVICE_NAME, "anything"); |
设备的名称 如果设备是安卓 名称任意 如果是IOS的就要写真实的设备名称
2.2:启动的应用包名和启动的应用的起始activity
注意红色的key值一定不能写错 并且要注意大小写
//要启动的应用包名 caps.setCapability("appActivity", appActivity); |
2.3:调用Appium自带输入法和default输入法
注意下列两个必须同步配合使用 否则将会导致严重的后果 (...)
//盗用Appium自带的输入法 caps.setCapability("unicodeKeyBoard", true); //default成设置前的配置 |
2.4:设置APP从签名属性
因为有的app在重签名之后无法使用
caps.setCapability("noSign", true); |
2.5:设置session的超时时间(可有可无)
由于Appium默认的session时间是60s
caps.setCapability("newCommandTimeout", 600); |
2.6:设置启动设备的udid
caps.setCapability("udid", "kjioghju890e"); |
2.7:设置设备连接超时等待时间(可有可无)
设备连接等待时间默认为5S
caps.setCapability("deviceReadyTimeout",60); |
以上出2.5/2.7是非必须的初始化参数之外 其他的都是必须的
3:HelloWord程序 启动手机端"知乎"APP
package com.AutoAPP.APP;
import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.android.AndroidElement;
import io.appium.java_client.remote.MobileCapabilityType;
import java.io.File;
import java.net.URL;
import org.openqa.selenium.remote.DesiredCapabilities;
public class AppTest {
public static void initDriver(String appPackage,String appActivity) throws Exception{
DesiredCapabilities caps=new DesiredCapabilities();
//
caps.setCapability(MobileCapabilityType.DEVICE_NAME, "anything");
caps.setCapability("appPackage", appPackage);
//要启动的应用的起始activity
caps.setCapability("appActivity", appActivity);
//resetKeyBoard是执行完测试后将设备的输入法重置回原有的输入法
caps.setCapability("unicodeKeyBoard", true);
caps.setCapability("resetKeyBoard", true);
//不对app进行重签名,因为有的app在重签名之后无法使用
caps.setCapability("noSign", true);
//设置session的超时时间
caps.setCapability("newCommandTimeout", 600);
caps.setCapability("udid", "2be8d4ca9805");
//http://127.0.0.1:4723/wd/hub 为Appium的URL连接
AndroidDriver<AndroidElement> driver
=new AndroidDriver<AndroidElement>(new URL("http://127.0.0.1:4723/wd/hub"), caps);
}
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
initDriver("com.zhihu.android","com.zhihu.android.app.ui.activity.LauncherActivity");
}
}