Loading [MathJax]/extensions/tex2jax.js

2020年6月9日火曜日

Appium 入門 3 ( サンプルアプリのボタンを押す)

前回の記事で、サンプルアプリでHello World!を表示されるまでをやってみました。
やったというか、ただ公式サイトのサンプルコードをコピペしただけですが...

今回はこのサンプルアプリについているボタンを押すところをAppiumでやってみます。
サンプルアプリ(API Demos)を起動して、Views → Buttons と遷移させると表示されるボタンです。

初心者の自分にとってはとても大変でした。
環境
Windows 10
Android 5.1 (実機)
appium 1.15.1

1.概要
大まかには、この画面やボタンの情報を取得して、それを元に前回のjavascriptのコードに反映させるという流れとなります。

2.画面の情報取得( appActivity )
  1. const opts = {  
  2.   path: '/wd/hub',  
  3.   port: 4723,  
  4.   capabilities: {  
  5.     platformName: "Android",  
  6.     platformVersion: "5.1",  
  7.     deviceName: "002628105537",  
  8.     app: "C:/Users/XXXXX/Desktop/appium_test/ApiDemos-debug.apk",   
  9.     appPackage: "io.appium.android.apis",  
  10.     appActivity: ".view.TextFields",   // ← ここに入れる情報  
  11.     automationName: "UiAutomator2"  
  12.   }  
  13. };  
javascriptの 「appActivity」に入れる情報を取得します。
実機の方でサンプルアプリを起動して、押下したいボタンの画面を表示しておき、
コマンドプロンプトで「adb shell」と打ち込みます。

※adbコマンドが実行できない場合は、環境変数のpathに%ANDROID_HOME%\platform-toolsを追加するか、platform-toolsにcdで移動して、実行してください。

そのままコマンドプロンプトで下記のコマンドを打ち込みます。
  1. dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp'  
表示された文字列の赤線の部分がappActivityに入れるものとなります。


参考にしたサイトはこちらです。

3.画面の情報取得( ボタンの情報)

3.1 uiautomatorviewerを起動

%ANDROID_HOME%\tools\binにある「uiautomatorviewer.bat」をダブルクリックします。
※uiautomatorviewer.batが起動しない場合は、こちらが参考になるかもしれません。

3.2 uiautomatorviewerで情報を取得

起動したら、左上のボタンを押します。
ちょっと待つと画像が表示されるので、押したいボタンをマウスでクリックします。
右のペインにクリックしたボタンの情報が表示されるので、class名をコピーしておきます。


4.クリックの表現方法を調べる
Appiumのサイトでコマンドのページがあるので、そちらを参考にしました。
「$('#SomeId').click();」


5.javascriptに反映
手順の2~4で調べた情報を元にjavascriptに反映します。
  1. // javascript  
  2.   
  3. const wdio = require("webdriverio");  
  4. const assert = require("assert");  
  5.   
  6. const opts = {  
  7.   path: '/wd/hub',  
  8.   port: 4723,  
  9.   capabilities: {  
  10.     platformName: "Android",  
  11.     platformVersion: "5.1",  
  12.     deviceName: "002628105537",  
  13.     app: "C:/Users/XXXXX/Desktop/appium_test/ApiDemos-debug.apk",  // ここは環境に合わせてください。  
  14.     appPackage: "io.appium.android.apis",  
  15.     appActivity: ".view.Buttons1",                      // 手順2で調べたものに書き換える  
  16.     automationName: "UiAutomator2"  
  17.   }  
  18. };  
  19.   
  20. async function main () {  
  21.   const client = await wdio.remote(opts);  
  22.   
  23.   const field = await client.$("android.widget.Button");  // 手順3で調べたものに書き換える  
  24.   await field.click();                                    // 手順4で調べたものに書き換える  
  25.   
  26.   
  27.   await client.deleteSession();  
  28. }  
  29.   
  30. main();  
5.結果
これで実行すると、ボタンが押されました。
できた。

実行方法がわからない場合は、前回前々回の記事を参考にしてください。
0 件のコメント:
コメントを投稿