アピウムの設置と使用(Java)


以下の操作はSDK環境が必要です.Android Studioからダウンロードできます.
Android Studio公式サイト:http://www.android-studio.org/
環境変数をダウンロードして設定したら、コマンドラインでadbを入力して、設定が正しいかどうかを確認することができます.
Appium安装及使用 (Java)_第1张图片
 アピウム:https://github.com/appium/appium
CNPMでApiumをインストールする
node.jsをダウンロードしてインストールしてnpmを使うことができます.
nodejs中国語ネット:http://nodejs.cn/
nodejsをダウンロードし終わったら、Windowsでコマンドライン(Winキー+R、cmdを入力)を開きます.
Appium安装及使用 (Java)_第2张图片
cnpmをインストールする
npm install-g cnpm--registry=https://registry.npm.taobao.org

cnpm install-g appum
Appium安装及使用 (Java)_第3张图片
命令行にAppumを入力すると起動できます.
はシミュレータを開く.
cmd(コマンドライン)を開いて、adb devicesを入力して接続が成功したか確認します.
入力:adb shell
入力:ロゴcat_grep Displayed
シミュレータは計算機に入り、コマンドラインでパケット名と起動のActivityを取得できます.

 
スタートIDE作成Maven項目
POM.xmlにapiumを導入する
   io.appium
   java-client
   7.2.0
Sdk\tools\binディレクトリの下で、uiatomatiorview.batを起動し、赤いエリアをクリックして、ページを更新することができます.
Appium安装及使用 (Java)_第4张图片
ビュー(コントロール)をクリックして、右側に対応する属性を表示します.
Appium安装及使用 (Java)_第5张图片
今は4*9=スライド操作をしています.各ステップの後、スレッドは1秒眠っています.実行効果を確認しやすいです.
Appium安装及使用 (Java)_第6张图片
Case類では維持用例(データ)と断言のみを担当し、Page類ではコントロールの取得を担当しています.Base類は主に上に向かって抽出するいくつかの常用方法です.
下記のコードは簡単に実現しただけですので、多くのところが未整備です.実際の応用の中で、修正すべきところがたくさんあります.
コードは以下の通りです 
package com.test.testcase;

import com.test.page.HomePage;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;

public class CalculateTest {
    HomePage homePage = new HomePage();
    @BeforeAll
    public static void beforeAll(){
        HomePage.start();
    }

    @Test
    public void test1(){
        homePage.multiplication(4,9);
        homePage.rightMenu(true); //      
        homePage.sleep(3);
        homePage.rightMenu(false); //      
        homePage.sleep(1);
        homePage.clear();//       
    }
}
package com.test.page;

import com.test.base.BasePage;
import io.appium.java_client.touch.WaitOptions;
import io.appium.java_client.touch.offset.PointOption;
import org.openqa.selenium.WebElement;

import java.time.Duration;

public class HomePage extends BasePage {
    //     
    WebElement digit_1;
    WebElement digit_2;
    WebElement digit_3;
    WebElement digit_4;
    WebElement digit_5;
    WebElement digit_6;
    WebElement digit_7;
    WebElement digit_8;
    WebElement digit_9;
    WebElement digit_0;
    WebElement op_mul;
    WebElement eq;


    public void multiplication(int x , int y){
        //          
        if(null == digit_0){
            initButton();
        }

        clickButton(x);
        sleep(1);
        op_mul.click();
        sleep(1);
        clickButton(y);
        sleep(1);
        eq.click();

    }
    //      
    public void clear(){
        driver.findElementById("clr").click();
    }

    //      
    public void rightMenu(boolean flag){
        if(flag) {
            touchAction.longPress(PointOption.point(1020, 1000));//     x1020 y1000
            touchAction.moveTo(PointOption.point(100, 1000)).release().perform(); // x100 y1000  
            touchAction.waitAction(WaitOptions.waitOptions(Duration.ofSeconds(1)));// 1      
            touchAction.cancel(); //    
        }else{
            touchAction.longPress(PointOption.point(290, 1000));
            touchAction.moveTo(PointOption.point(900, 1000)).release().perform();
            touchAction.waitAction(WaitOptions.waitOptions(Duration.ofSeconds(1)));
            touchAction.cancel(); //    
        }
    }

    public void clickButton(int i){
        switch (i) {
            case 0:
                digit_0.click();
                break;
            case 1:
                digit_1.click();
                break;
            case 2:
                digit_2.click();
                break;
            case 3:
                digit_3.click();
                break;
            case 4:
                digit_4.click();
                break;
            case 5:
                digit_5.click();
                break;
            case 6:
                digit_6.click();
                break;
            case 7:
                digit_7.click();
                break;
            case 8:
                digit_8.click();
                break;
            case 9:
                digit_9.click();
                break;
        }
    }

    public void initButton(){
         digit_1 = driver.findElementById("digit_1");
         digit_2 = driver.findElementById("digit_2");
         digit_3 = driver.findElementById("digit_3");
         digit_4 = driver.findElementById("digit_4");
         digit_5 = driver.findElementById("digit_5");
         digit_6 = driver.findElementById("digit_6");
         digit_7 = driver.findElementById("digit_7");
         digit_8 = driver.findElementById("digit_8");
         digit_9 = driver.findElementById("digit_9");
         digit_0 = driver.findElementById("digit_0");
         op_mul = driver.findElementById("op_mul");
         eq = driver.findElementById("eq");
    }


}
package com.test.base;

import io.appium.java_client.TouchAction;
import io.appium.java_client.android.AndroidDriver;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.remote.DesiredCapabilities;

import java.net.MalformedURLException;
import java.net.URL;
import java.util.concurrent.TimeUnit;

public class BasePage {
    public static AndroidDriver driver;
    public static Actions actions;
    public static TouchAction touchAction;
    public static JavascriptExecutor js;
    public BasePage() {

    }
    //    
    public void sleep(int second){
        try {
            Thread.sleep(second * 1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

    //  APP  
    public static void start() {
        DesiredCapabilities desiredCapabilities = new DesiredCapabilities();
        desiredCapabilities.setCapability("platformName", "Android");//    
        desiredCapabilities.setCapability("deviceName", "emulator-5554"); //     
        desiredCapabilities.setCapability("appPackage", "com.android.calculator2");//Packge
        desiredCapabilities.setCapability("appActivity", "com.android.calculator2.Calculator"); //  Activity
        desiredCapabilities.setCapability("noReset", "true");
        desiredCapabilities.setCapability("autoGrantPermissions", true); //        

        URL remoteUrl = null;
        try {
            //  Appium    
            remoteUrl = new URL("http://localhost:4723/wd/hub");
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }

        driver = new AndroidDriver(remoteUrl, desiredCapabilities);

        //        5 
        driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);

        actions = new Actions(driver);
        touchAction = new TouchAction(driver);
    }
}