java+appium+安卓模擬器實現app自動化Demo


網上有比較多相關教程,自己寫一遍,加深下印象。

環境搭建

據說,很多人都被繁瑣的環境搭建給嚇到了。

是的,確實,繁瑣。

node.js

網址

cmd輸入node -v,出現下圖說明成功。

JDK

網址

百度一下“配置Java”

cmd輸入java -version,出現下圖說明成功。

Android SDK

網址

百度一下"配置Android SDK環境變量"

cmd輸入adb,出現下圖說明成功。

Appium Desktop

網址1 / 網址2

Maven

網址

百度一下“maven環境配置”

cmd輸入mvn -version,出現下圖說明成功。

IntelliJ IDEA

網址

安卓模擬器

網址

把Android SDK目錄下\platform-tools的adb.exe拷貝

打開Nox\bin目錄

粘貼替換adb.exe

打開模擬器

cmd輸入adb connect 127.0.0.1:62001

再輸入adb devices

有道計算器

網址

下載后,apk文件存放在某目錄下即可。

將apk文件直接拖入安卓模擬器中。

至此,環境搭建完畢,共安裝了8個程序。

實現步驟

打開IntelliJ

創建maven項目


點擊ok后,復制下面代碼到pom.xm中

  <dependencies>
        <dependency>
            <groupId>io.appium</groupId>
            <artifactId>java-client</artifactId>
            <version>4.1.2</version>
        </dependency>
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>6.14.2</version>
        </dependency>
    </dependencies>



復制粘貼下面代碼

import org.testng.annotations.Test;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.AfterClass;

import io.appium.java_client.AppiumDriver;
import io.appium.java_client.android.AndroidDriver;

import java.net.URL;

import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;

public class AppDemo {
    private AppiumDriver driver;

    @BeforeClass
    public void setup() throws Exception {
        DesiredCapabilities cap = new DesiredCapabilities();
        cap.setCapability(CapabilityType.BROWSER_NAME, "");
        cap.setCapability("platformName", "Android"); //指定測試平台
        cap.setCapability("deviceName", "127.0.0.1:62001"); //指定測試機的ID,通過adb命令`adb devices`獲取
        cap.setCapability("platformVersion", "5.1.1");

        //將上面獲取到的包名和Activity名設置為值
        cap.setCapability("appPackage", "com.youdao.calculator");
        cap.setCapability("appActivity", "com.youdao.calculator.activities.MainActivity");

//        //A new session could not be created的解決方法
//        cap.setCapability("appWaitActivity", "com.meizu.flyme.calculator.Calculator");
//        //每次啟動時覆蓋session,否則第二次后運行會報錯不能新建session
//        cap.setCapability("sessionOverride", true);

        driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), cap);
    }

    @Test
    public void plus() throws Exception {
        Thread.sleep(3000);
        int width = driver.manage().window().getSize().width;
        int height = driver.manage().window().getSize().height;
        int x0 = (int)(width * 0.8);  // 起始x坐標
        int x1 = (int)(height * 0.2);  // 終止x坐標
        int y = (int)(height * 0.5);  // y坐標
        for (int i=0; i<5; i++) {
            driver.swipe(x0, y, x1, y, 500);
            Thread.sleep(1000);
        }

        driver.findElementById("com.youdao.calculator:id/guide_button").click();
        for (int i=0; i<6; i++) {
            driver.findElementByXPath("//android.webkit.WebView[@text='Mathbot Editor']").click();
            Thread.sleep(1000);
        }

        String btn_xpath = "//*[@resource-id='com.youdao.calculator:id/view_pager_keyboard']/android.widget.GridView/android.widget.FrameLayout[%d]/android.widget.FrameLayout";
        driver.findElementByXPath(String.format(btn_xpath, 7)).click();
        driver.findElementByXPath(String.format(btn_xpath, 10)).click();
        driver.findElementByXPath(String.format(btn_xpath, 8)).click();
        Thread.sleep(3000);


    }

    @AfterClass
    public void tearDown() throws Exception {

        driver.quit();

    }
}

文件右鍵run

然后可以看到腳本在跑了

打開安卓模擬器

一會就看到

計算器app在自己動了!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM