やったというか、ただ公式サイトのサンプルコードをコピペしただけですが...
今回はこのサンプルアプリについているボタンを押すところをAppiumでやってみます。
サンプルアプリ(API Demos)を起動して、Views → Buttons と遷移させると表示されるボタンです。
初心者の自分にとってはとても大変でした。
Windows 10環境
Android 5.1 (実機)
appium 1.15.1
1.概要
大まかには、この画面やボタンの情報を取得して、それを元に前回のjavascriptのコードに反映させるという流れとなります。
2.画面の情報取得( appActivity )
const opts = { path: '/wd/hub', port: 4723, capabilities: { platformName: "Android", platformVersion: "5.1", deviceName: "002628105537", app: "C:/Users/XXXXX/Desktop/appium_test/ApiDemos-debug.apk", appPackage: "io.appium.android.apis", appActivity: ".view.TextFields", // ← ここに入れる情報 automationName: "UiAutomator2" } };javascriptの 「appActivity」に入れる情報を取得します。
実機の方でサンプルアプリを起動して、押下したいボタンの画面を表示しておき、
コマンドプロンプトで「adb shell」と打ち込みます。
コマンドプロンプトで「adb shell」と打ち込みます。
※adbコマンドが実行できない場合は、環境変数のpathに%ANDROID_HOME%\platform-toolsを追加するか、platform-toolsにcdで移動して、実行してください。
そのままコマンドプロンプトで下記のコマンドを打ち込みます。
dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp'表示された文字列の赤線の部分がappActivityに入れるものとなります。
参考にしたサイトはこちらです。
3.画面の情報取得( ボタンの情報)
3.1 uiautomatorviewerを起動
%ANDROID_HOME%\tools\binにある「uiautomatorviewer.bat」をダブルクリックします。※uiautomatorviewer.batが起動しない場合は、こちらが参考になるかもしれません。
3.2 uiautomatorviewerで情報を取得
起動したら、左上のボタンを押します。4.クリックの表現方法を調べる
Appiumのサイトでコマンドのページがあるので、そちらを参考にしました。「$('#SomeId').click();」
5.javascriptに反映
手順の2~4で調べた情報を元にjavascriptに反映します。
// javascript const wdio = require("webdriverio"); const assert = require("assert"); const opts = { path: '/wd/hub', port: 4723, capabilities: { platformName: "Android", platformVersion: "5.1", deviceName: "002628105537", app: "C:/Users/XXXXX/Desktop/appium_test/ApiDemos-debug.apk", // ここは環境に合わせてください。 appPackage: "io.appium.android.apis", appActivity: ".view.Buttons1", // 手順2で調べたものに書き換える automationName: "UiAutomator2" } }; async function main () { const client = await wdio.remote(opts); const field = await client.$("android.widget.Button"); // 手順3で調べたものに書き換える await field.click(); // 手順4で調べたものに書き換える await client.deleteSession(); } main();
5.結果
これで実行すると、ボタンが押されました。できた。
実行方法がわからない場合は、前回や 前々回の記事を参考にしてください。
0 件のコメント:
コメントを投稿