Appium+Java環境搭建及簡單實例

Appium+Java環境搭建及簡單實例

一、下載jdk並配置好環境
二、下載Android-sdk並配置好環境
三、下載Eclipse軟件

四、下載Node.js
下載地址:https://nodejs.org/en/download/,或者雲盤上下載:node-v12.16.3-x64.msi
在這裏插入圖片描述
傻瓜式安裝即可,如果改變的安裝路徑,需要要配置npm參數,把命令當中的路徑換成實際路徑,打開cmd,操作如下:
npm config set prefix=“D:\Program Files\nodejs\node_global”
npm config set cache=“D:\Program Files\nodejs\node_cache”
npm config set init-module=“D:\Program Files\.npm-init.js”
npm config set registry=“https://registry.npm.taobao.org/”
npm config set tmp=“D:\Program Files\Temp”
npm config set userconfig=“D:\Program Files\.npmrc”
安裝完成後進行驗證,cmd:node -v
在這裏插入圖片描述
五、Appuim下載
Appium 目前託管在github,正確的Appuim下載地址:https://github.com/appium/appium-desktop/releases/tag/v1.12.1,或者雲盤上下載
*安裝完成後,需要配置路徑,將node_modules.bin目錄放到系統path環境下,即將路徑D:\Program Files (x86)\Appium\node_modules.bin添加到環境變量path中去。 *(視情況而定,本次實驗未做此操作)

在這裏插入圖片描述
選中第一個desktop桌面版的,有元素定位、錄製等操作。

cmd下執行命令npm install -g appium-doctor (視情況而定,此實驗未做此操作)
六、Appium操作
1、啓動程序,點擊下方按鈕啓動軟件
在這裏插入圖片描述
2、顯示啓動成功,點擊紅圈啓動檢查器會話
在這裏插入圖片描述
在這裏插入圖片描述
3、啓動adb,檢查是否有設備接入
在這裏插入圖片描述
4、查看appium啓動的頁面,並在右下角編輯輸入需要的信息,保存,左上角選中自動啓動服務。頁面效果如下:
其中需要填入的信息如下:
“platformName”: “Android”, #系統
"platformVersion ": “10”, #系統版本
“deviceName”: “xx”, #手機名稱
“appPackage”: “xx.xx.xxxt”, #軟件安裝包Package
“appActivity”: “xx.xx.xxxxxxxx”#軟件安裝包Activity
“App”: “D:\xx.apk” #手機安裝包路徑,如果手機有安裝,可以不添加
在這裏插入圖片描述
5、點擊右下角啓動session,此時手機端要保證可以安裝程序Appium Setting,
在這裏插入圖片描述
6、啓動後頁面效果如下,其中最上方紅圈爲錄製操作,紅圈最左側的向右的箭頭是滑動操作,右側的紅圈爲點擊發送事件操作:
在這裏插入圖片描述
7、啓動錄製後,點擊右上角展示詳細代碼:
在這裏插入圖片描述

七:Eclipse+java操作
1、啓動Eclipse軟件,並創建java project項目,創建JUnit Test Case,選擇junit 4,並在完成的時候導入所有的junit 4 的包
在這裏插入圖片描述
2、編寫代碼前導入三個jar包,雲盤上有,也可http://selenium-release.storage.googleapis.com/index.html這裏下載
在這裏插入圖片描述
3、可以自己編寫代碼,可以複製錄製操作的代碼,如下:

import static org.junit.Assert.*;

import org.junit.Test;
import io.appium.java_client.MobileElement;
import io.appium.java_client.android.AndroidDriver;
import junit.framework.TestCase;
import org.junit.After;
import org.junit.Before;
import java.net.MalformedURLException;
import java.net.URL;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.support.ui.Sleeper;

public class appium {

  private AndroidDriver driver;

  @Before
  public void setUp() throws MalformedURLException {
    DesiredCapabilities desiredCapabilities = new DesiredCapabilities();
    desiredCapabilities.setCapability("platformName", "Android");
    desiredCapabilities.setCapability("platformVersion", "10");
    desiredCapabilities.setCapability("deviceName", "XXXXXXXXXXXXX");
    desiredCapabilities.setCapability("appPackage", "com.android.deskclock");
    desiredCapabilities.setCapability("appActivity", "com.android.deskclock.AlarmsMainActivity");

    URL remoteUrl = new URL("http://localhost:4723/wd/hub");

    driver = new AndroidDriver(remoteUrl, desiredCapabilities);
    System.out.println("程序啓動");
  }

  @Test
  public void sampleTest() throws InterruptedException {
    MobileElement el1 = (MobileElement) driver.findElementByXPath("/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.RelativeLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.RelativeLayout[2]/android.widget.RelativeLayout[1]/android.widget.ListView/android.widget.FrameLayout[1]/android.widget.RelativeLayout/android.widget.RelativeLayout[2]/android.widget.Switch");
    el1.click();
    Thread.sleep(1000);
    MobileElement el2 = (MobileElement) driver.findElementByXPath("/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.RelativeLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.RelativeLayout[2]/android.widget.RelativeLayout[1]/android.widget.ListView/android.widget.FrameLayout[2]/android.widget.RelativeLayout/android.widget.RelativeLayout[2]/android.widget.Switch");
    el2.click();
    Thread.sleep(1000);
    System.out.println("程序執行完成");
  }

  @After
  public void tearDown() {
    driver.quit();
    System.out.println("已退出程序");
  }
}
	

在這裏插入圖片描述
4、如手機端未安裝apk,可在項目中創建app存放的文件夾,aa,並在@before中加入代碼:

		// 獲取當前程序的路徑
		File classpathRoot = new File(System.getProperty("user.dir"));
		// 獲取apps文件
		File appDir = new File(classpathRoot, "app存放的文件夾名稱");
		// 獲取apk文件
		File app = new File(appDir, "xx.apk");//apk名稱

5、啓動程序中可加入捕獲異常操作:

		try {
			driver = new AndroidDriver<>(new URL("http://localhost:4723/wd/hub"), desiredCapabilities);
		} catch (MalformedURLException e) {
			e.printStackTrace();
		}

在這裏插入圖片描述
6、可參照類似於selenium的api進行元素獲取並操作:

WebElement xx = driver.findElement(By.id("xx"));
xx.click();

7、每次運行不安裝app

capabilities.setCapability("noReset", "true");
capabilities.setCapability("fullReset", "false");

每次運行不安裝app,Python代碼類似

caps["noReset"]="true";
caps["fullReset"]="false";

8、允許中文輸入

capabilities.setCapability("unicodeKeyboard", "true");
capabilities.setCapability("resetKeyboard", "true");

9、若真機app啓動失敗,可以考慮是否是安裝包加固引起的,可採用方法是不讓appium對apk進行重簽名

capabilities.setCapability("noSign","true") 

python類似:

caps["noSign"]="true";
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章