1. 程式人生 > >Appium移動端自動化測試-Capabilities引數的設定

Appium移動端自動化測試-Capabilities引數的設定

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 -->
        <dependency>
            <groupId>io.appium</groupId>
            <artifactId>java-client</artifactId>
            <version>4.1.2</version>
        </dependency>


        <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>2.53.1</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-server -->
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-server</artifactId>
            <version>2.53.1</version>
        </dependency>

測試程式碼如下

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("appPackage", appPackage);
//要啟動的應用的起始activity

caps.setCapability("appActivity", appActivity);

 

2.3:呼叫Appium自帶輸入法和default輸入法

注意下列兩個必須同步配合使用 否則將會導致嚴重的後果 (...)

//盜用Appium自帶的輸入法

caps.setCapability("unicodeKeyBoard", true);

//default成設定前的配置
caps.setCapability("resetKeyBoard", true);

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");

	}

}