2014年2月17日月曜日

AndroidでもSelenium2

|ω・`)ノ |Ю AndroidでもSelenium2が使えると聞いて

AndroidでもSelenium2

うまくいったら万々歳ですよ

1. 環境の作成

まず必要なのが、AndroidにSeleniumServerを用意すること。事前に adbコマンド は打てるようにしておくが吉。adbの入れ方は気が向いたら(PC変えた等)書くかも。

adb -versionでも打ってコマンドが使えることを確認する。

続いてこちらから、
android-server-"ver".apk
をもらう。 例によって "ver"はバージョン。(2014/02/17 時点では 2.21.0)

貰って来たら、こいつを端末にインストールする。
コマンドを開き、
adb -s 入れたい端末ID -e install -r android-server-"ver".apk
コマンドを叩く。apkは貰ったapkの名前。 入れたい端末のID は、別途
adb devices

コマンドを叩けば見られます
入れたい端末のID device
こんな感じで表示されるかと。

2. 準備

インストールが終わったら、今度は下準備。
まずは入れたWebDriverを起動する。
実機上のアイコンをタップするか、コマンドから
adb -s 入れたい端末のID shell am start -a android.intent.action.MAIN -n org.openqa.selenium.android.app/.MainActivity -e debug true
のコマンドを起動。この辺もバッチとかにしても楽かも。これでWebDriverが起動。真っ暗な感じの表示になるはず。
続いてポートフォワード設定(というらしい)。要は接続?
コマンドから、
adb -s 入れたい端末のID forward tcp:8080 tcp:8080
を入力。
ここまでやって端末側の準備が完了。

ちなみにこのWebDriver、 Android標準ブラウザ でのシミュレータになる(らしい)。 Chromeブラウザとかはどうやるんだろ…

3. テストコード用意

明らかに順番おかしい気がするけど。 JUnitが使えるので、今までのテストも使える。
ポイントは WebDriverの宣言。通常Chromeでテストする場合、
WebDriver driver = new ChromeDriver();
と宣言するところを、
WebDriver driver = new AndroidDriver();
と宣言する。

これで動きがみられるはず。
こいつをEclipseからでも実行してやると、実機上で動きが見られ、かつテスト結果はEclipseの方に出てくる。
デザインのチェックなどは厳しいけど、機能チェック、特に登録系に対してAndroidのキーボードでいちいち入力する手間が省けると、工数がぐっと減る気がする。

問題は、「バックキー」 が使えないこと。 使うと WebDriver自体が終了します。






うん。Androidでやる意味が薄いな…('A`)
PCでええやん…


4. おまけ ~WebDriverでUA偽装

正直UA偽装でもいい気がしたので。
今回はChrome用。たぶん他にもあるかと

    /* クローム用オプション。 UA偽装しないと見れない時に */
    ChromeOptions options = new ChromeOptions();

    /* UA偽装 to iPhone */
    options.addArguments("--user-agent=Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5376e Safari/8536.25");

    /* Chromeドライバのインスタンス。オプションセット版 */
    driver = new ChromeDriver(options);

要するにオプションで設定できますよ、ってお話。UAはぐーぐる先生に聞いてみるといろいろ出てくるので、お好きなものをセットしてみましょう。




正直これでいい気がした(・ω・`)

0 件のコメント:

コメントを投稿

AWS CDKで立てたEC2インスタンスのTimeZoneとかいじりたかった話

EC2を立てることはできたけど、立てたインスタンスは UTCのままだし設定ファイルとかいちいちscpしてくるのはダルい。 当初UserDataでなんとかしようとしたものの、「書く量がヤバいしメンテしにくい」と悩んでいたところ見かけたのが  AWS::CloudFormation:...