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