Loading [MathJax]/extensions/tex2jax.js

2020年6月22日月曜日

Appium 入門6 ( 電卓のボタン押す)

はじめに
Appiumを使って、電卓のボタンを押すところまでやってみました。
今までjavascriptでやってきたのですが、うまくできなかったために、javaに乗り換えました。

環境
OS : Windows 10
スマホ : emulator (Pixel3 API 26)
Android Studio : 3.6.3
Appium : 1.17.1
言語 : java

参考にしたサイト

https://www.swtestacademy.com/appium-tutorial/
↑ 細かく書かれており、とても参考になりました。

1.準備
appium等のインストールは完了した状態で実施しております。
まだの場合はAppium入門1 を参考に、 javascriptでサンプルコードが動作するところまで実施できるようにしてみてください。
2.intellij IDEA をインストール
下記のサイトから無料版(コミュニティ)の方をダウンロードします。  https://www.jetbrains.com/ja-jp/idea/download/#section=windows
3.dependencies.の設定
3-1. IntelliJ IDEAを起動する。
3-2.+ Create New Projectを押す。
3-3.Mavenを選択して、Nextボタンを押す

3-4.Nameに適当な名前を付けてFinishボタンを押す。
3-5.https://mvnrepository.com/ にアクセスする。
3-6.「io.appium」 で検索する。
java-client - 最新のバージョンを選択し、mavenというタブに表示されたxmlをコピーする。
 3-7.コピーしたものをintellj IDEAのpom.xmlにペーストする。
dependenciesというタグで囲む必要があります。
同じようにselenium-javaと, testngもコピペします。
最終的にはこんな感じになります。
  1. <project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemalocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  
  2.    <modelversion>4.0.0</modelversion>  
  3.   
  4.    <groupid>org.example</groupid>  
  5.    <artifactid>untitled</artifactid>  
  6.    <version>1.0-SNAPSHOT</version>  
  7.   
  8.  <!--ここから追加-->  
  9.    <dependencies>  
  10.        <!--https://mvnrepository.com/artifact/io.appium/java-client-->  
  11.        <dependency>  
  12.            <groupid>io.appium</groupid>  
  13.            <artifactid>java-client</artifactid>  
  14.            <version>7.3.0</version>  
  15.        </dependency>  
  16.   
  17.        <!--https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java-->  
  18.        <dependency>  
  19.            <groupid>org.seleniumhq.selenium</groupid>  
  20.            <artifactid>selenium-java</artifactid>  
  21.            <version>3.141.59</version>  
  22.        </dependency>  
  23.   
  24.        <!--https://mvnrepository.com/artifact/org.testng/testng-->  
  25.        <dependency>  
  26.            <groupid>org.testng</groupid>  
  27.            <artifactid>testng</artifactid>  
  28.            <version>7.1.0</version>  
  29.            <scope>test</scope>  
  30.        </dependency>  
  31.   
  32.    </dependencies>  
  33.  <!--ここまで-->  
  34.    
  35. </project>  
3-8. versionの数字が赤い場合は、下図の更新ボタンを押すか、intelljを再起動すると     読み込まれるようです。(この辺はちょっと怪しいです。) 
 
4.inspectorで情報取得
4-1. emulator を起動
4-2. 電卓アプリを起動
4-3. appiumを起動
4-4. uiautomatorviewerを起動
4-5. 電卓の1のボタンのresource-idを後で使います。
※uiautomatorviewerの使い方はこちらを参考にしてください。

5.emulatorの情報取得
5-1.emulatorを起動しておく
5-2.PCでコマンドプロンプトを起動する。
5-3.adb devices とコマンドプロンプトに打ち込んで実行する。
※adbコマンドが実行できない場合は、環境変数のpathに%ANDROID_HOME%\platform-toolsを追加するか、platform-toolsにcdで移動して、実行してください
5-4.表示された文字列を後で使います。

6.javaのコードを作成
6-1. intellJ IDEAで src - test - javaを右クリック
New - Java Class を追加 - 任意の名前でクラスを追加する。

6-2. ここまでで集めた情報を使って次のコードを書きます。
①~④のところに今まで集めた情報を入れます。 後は特に変更しませんでした。
参考にしたサイトのコードとは少し異なります。不要と思うところを削除したためです。

  1.    import io.appium.java_client.MobileElement;  
  2.    import io.appium.java_client.android.AndroidDriver;  
  3.    import org.openqa.selenium.By;  
  4.    import org.openqa.selenium.remote.DesiredCapabilities;  
  5.    import org.openqa.selenium.support.ui.ExpectedConditions;  
  6.    import org.openqa.selenium.support.ui.WebDriverWait;  
  7.    import org.testng.annotations.AfterMethod;  
  8.    import org.testng.annotations.BeforeMethod;  
  9.    import org.testng.annotations.Test;  
  10.   
  11.    import java.net.MalformedURLException;  
  12.    import java.net.URL;  
  13.   
  14.    public class calctest {  
  15.        public AndroidDriver<mobileelement> driver;  
  16.        public WebDriverWait wait;  
  17.   
  18.        @BeforeMethod  
  19.        public void setup () throws MalformedURLException {  
  20.            DesiredCapabilities caps = new DesiredCapabilities();  
  21.            caps.setCapability("deviceName""Pixel 3 API 26"); // ①emulatorの名前  
  22.            caps.setCapability("udid""emulator-5554");        // ②adb devicesコマンドの結果  
  23.            caps.setCapability("platformName""Android");      // ③androidなのでandroid  
  24.   
  25.            driver = new AndroidDriver<mobileelement>(new URL("http://127.0.0.1:4723/wd/hub"),caps);  
  26.            wait = new WebDriverWait(driver, 10);  
  27.        }  
  28.   
  29.        @Test  
  30.        public void basicTest () throws InterruptedException {  
  31.            //Click and pass Splash  
  32.            wait.until(ExpectedConditions.visibilityOfElementLocated  
  33.                    (By.id("com.android.calculator2:id/digit_1"))).click();    // ④uiautomatorviewer.exeで取得した情報を  
  34.        }  
  35.   
  36.        @AfterMethod  
  37.        public void teardown(){  
  38.            driver.quit();  
  39.        }  
  40.    }  
  41.   
  42.      
  43. </mobileelement></mobileelement>  

7.実行
7-1. emulatorを起動(「サーバーVXXXXXを起動する」ボタンも押しておく)
7-2. emulator上で電卓アプリを起動
7-3. intellj IDEAで、Runメニュー Runを押す。
7-4. 電卓の1が押せたら成功です。

8.できた
こんな感じで押せました。

0 件のコメント:
コメントを投稿