以前、AndroidのChromeを使うテストをRobot Frameworkで書いてみました。
RobotFramework + SeleniumLibraryにて、Android実機上のChromeを使ってテストする - メモ的な思考的な
この時は実機上のChromeを使っていました。
今回は、Androidエミュレータの一種であるGenymotion上のChromeを使って、テストしてみます。
目次
環境
- Mac OS X 10.11.6
- Python 3.6.2
- RobotFramework 3.0.2
- SeleniumLibrary 3.0.0b1
- Node.js 8.4.0
- Xcode 8.2.1
- Appium 1.7.1
- Genymotion 2.10.0
上記の環境はすべて構築済とします。
なお、Appiumのインストールは、以下の記事で行ったものを流用しています。
RobotFramework + SeleniumLibrary + Appiumで、iOSシミュレータ上のSafariブラウザでテストする - メモ的な思考的な
環境構築
Genymotion上に仮想デバイスを作成
今回は Google Nexus5 - 5.1.0 - API22 - 1080x1920 をセットアップします。
セットアップ終了後、仮想デバイスを起動したままにしておきます。
OpenGAppsのChromeをインストール
今回はGenymotoinoのサイトでも紹介されている通り、 OpenGApps を使ってChromeをインストールします。
Genymotion 2.10 – Google Play Services and Play Store Are There!
Google Playを使うにはVariantは nano で良いのですが、Chromeは含まれていません。
そのため、以下の内容でダウンロードします。
| Platform | Android | Variant |
|---|---|---|
| x86 | 5.1 | full |
zipファイルのダウンロードが終わったら、そのzipファイルをGenymotionへとドラッグ&ドロップします。
しばらくすると仮想デバイスへのインストールが終わります。
インストール後、仮想デバイスを再起動すると、Chromeがインストールされています。
Robot Frameworkのテストコード実装
実機上でテストしたものと同じソースコードとなります。
*** Settings ***
Library SeleniumLibrary
*** Keywords ***
GoogleでPythonを検索してスクリーンショットを撮り、結果を出力する
# 以下のコードをRobot Framework風にした
# http://qiita.com/orangain/items/db4594113c04e8801aad
# 以下を参考に、Chromeのオプションを追加して、Chromeを起動する
# https://sites.google.com/a/chromium.org/chromedriver/getting-started/getting-started---android
${options} = evaluate sys.modules['selenium.webdriver'].ChromeOptions() sys
call method ${options} add_experimental_option androidPackage com.android.chrome
create webdriver Chrome chrome_options=${options}
# Googleのトップ画面を開く
go to https://www.google.co.jp/
# タイトルにGoogleが含まれていることを確認する
${page_title} = get title
should contain ${page_title} Google
# 検索後を入力してEnter
input text name=q Python
# Robot FrameworkではEnterキーは\\13になる
# https://github.com/robotframework/Selenium2Library/issues/4
press key name=q \\13
# Ajax遷移のため、適当に2秒待つ
sleep 2sec
# タイトルにPythonが含まれていることを確認する
${result_title} = get title
should contain ${result_title} Python
# スクリーンショットを撮る
capture page screenshot filename=result_google_python_android.png
# ログを見やすくするために改行を入れる
log to console ${SPACE}
# 検索結果を表示する
@{web_elements} = get webelements css=h3 > a
:for ${web_element} in @{web_elements}
\ ${text} = get text ${web_element}
\ log to console ${text}
\ ${href} = call method ${web_element} get_attribute href
\ log to console ${href}
# ブラウザを終了する
close browser
*** TestCases ***
GoogleでPythonを検索するテスト
GoogleでPythonを検索してスクリーンショットを撮り、結果を出力する
テスト実行
Genymotionの仮想デバイスを起動
シャットダウンしているとテストできないため、起動しておきます。
Appiumを起動
ターミナルより起動します。
$ appium [Appium] Welcome to Appium v1.7.1 [Appium] Appium REST http interface listener started on 0.0.0.0:4723
テストを実行
ターミナルより実行します。
$ robot android_chrome.robot ================ Android Chrome ================ GoogleでPythonを検索するテスト Python - ウィキペディア https://ja.m.wikipedia.org/wiki/Python Python基礎講座(1 Pythonとは) - Qiita http://qiita.com/Usek/items/ff4d87745dfc5d9b85a4 Pythonとは - python.jp https://www.python.jp/about/ Top - python.jp https://www.python.jp/ 【入門者必見】Pythonとは?言語の特徴やシェア、仕事市場を徹底解説 | 侍エンジニア塾ブログ | プログラミング入門者向け学習情報サイト http://www.sejuku.net/blog/7720 Python 3を使うべきでない場合(なんてない) | プログラミング | POSTD http://postd.cc/case-python-3/ Pythonに咬まれるな : 注意すべきセキュリティリスクのリスト | プログラミング | POSTD http://postd.cc/a-bite-of-python/ GoogleでPythonを検索するテスト | PASS |
テストがパスしました。
また、スクリーンショットも撮影されています。

ソースコード
GitHubに上げました。 selenium_appium_sample/android_chrome.robot ファイルが今回のテストファイルです。
thinkAmi-sandbox/RobotFramework-sample: Robot Framewrok samples