google chrome on android を自動実行
TRANSCRIPT
Google Chrome on Androidを自動実行
東平洋史
用意するハードウェア
• 自動実行プログラムを実行するパソコン
– Mac, Windows, Linux
• Android の端末
• パソコンとAndroidを繋ぐUSB通信ケーブル
Android
用意するソフトウェア(パソコン)
• Android SDK Tools…Android端末制御用http://developer.android.com/sdk/index.htmlSDK Tools Onlyで大丈夫。
• Chrome Driver…Google Chrome制御用https://sites.google.com/a/chromium.org/chromedriver/Selenium Gridからも制御可能
• Selenium WebDriverで書かれたプログラムJava, Ruby, Python, C#, …
ここで実習
実習内容
次のテストを行なうスクリプトの作成
1. Googleで「小江戸らぐ」を検索
2. 次のページを表示OSS支える!コミュニティー訪問~小江戸らぐ-川越を中心にゆるく活動するLinuxユーザー会
3. 写真をクリックして拡大表示
おおまかな手順
• Android端末
1. USBデバッグを有効にする
• パソコン
1. Android SDK Toolsをインストール
2. Anddoid SDK Tools関係の環境変数設定
3. Android端末をパソコンに接続
4. Chrome Driver を起動 or 起動設定
5. プログラムを実行
USBデバッグを有効にする(Android)
1. (Android 4.2以降の場合)[開発者向けオプ
ション]がデフォルトで非表示になっているため、次のようにして表示させる。
1. [設定|<デバイス種別>情報]を開く
2. [ビルド番号]を 7 回タップする。
2. [開発者向けオプション]の[USB デバッグ]オプションをオンにする
Android SDK Toolsのインストール(パソコン)
1. Android SDK Toolsをダウンロードするhttp://developer.android.com/sdk/index.html#OtherSDK ToolS Onlyでよい
2. Android SDK Toolsをインストールする
– 最低限必要なのは Tools と Google USB Driver
Android SDK Tools 環境変数の設定
• ANDROID_HOME
– Android SDK Tools が置かれている場所
• PATH
– Android SDK Tools の場所を追加
• Mac, Linuxの場合$ANDROID_HOME/tools
• Windowsの場合%ANDROID_HOME%¥tools
Android端末をパソコンに接続
1. USB通信ケーブルで結線
2. パソコンでUSBドライバを認識させる
3. Android SDK Toolsのadbコマンドで接続確認
% adb devicesList of devices attachedEP73216535 device
Chrome Driverを起動
1. Chrome Driverをダウンロードhttps://sites.google.com/a/chromium.org/chromedriver/
2. Chrome Driver を起動chromedriver--whitelisted-ips --url-base=wd/hub(例)C:¥Selenium¥bin¥chromedriver.exe
--whitelisted-ips --url-base=wd/hub
テストスクリプトから呼び出す
1. DesiredCapabilitiesクラスのインスタンス生成
2. インスタンスの属性設定ChromeOptionsとして{'androidPackage': 'com.android.chrome'}を指定
3. RemoteWebDriverクラスを使用してWebDriver生成
Pythonで呼び出す
capabilities ={'chromeOptions':
{'androidPackage': 'com.android.chrome',}}
driver = webdriver.Remote(
‘http://Androidを繋いだマシン:9515/wd/hub',
capabilities)
Rubyで呼び出す
capabilities =
Selenium::WebDriver::Remote::Capabilities.chrome("chromeOptions" =>
{"androidPackage" => 'com.android.chrome'})
driver =
Selenium::WebDriver.for(
:remote, :url =>
"http://Androidを繋いだマシン:9515/wd/hub",
:desired_capabilities => capabilities)
Javaで呼び出すChromeOptions chromeOptions =
new ChromeOptions();
chromeOptions.setExperimentalOption(
"androidPackage", "com.android.chrome");
capability = new DesiredCapabilities();
capability.setCapability(
ChromeOptions.CAPABILITY, chromeOptions);
driver =
new RemoteWebDriver(
new URL(
“http://Androidを繋いだマシン:9515/wd/hub"),
capability);
C#で呼び出すDesiredCapabilities capability =
DesiredCapabilities.Chrome();
capability.SetCapability(
"chromeOptions",
new Dictionary<string, object> {
{ "androidPackage", "com.android.chrome" }
});
IWebDriver driver =
new RemoteWebDriver(
new Uri("http:// Androidを繋いだマシン:9515/wd/hub"),
capability);
おまけ
SeleniumGrid で遠隔操作
その構成
Selenium Grid Server (Hub)
Linux
Grid (node)
テストスクリプト
Windows
Android
Selenium Grid Nodeの設定
{“capabilities”:[ {"androidPackage": "com.android.chrome",
“platform”: "WINDOWS",
“browserName”: "chrome",“maxInstances”: 1,“version”: “Android",“seleniumProtocol”: “WebDriver“
},…
],}
テストスクリプトから呼び出す
1. DesiredCapabilitiesクラスのインスタンス生成
2. インスタンスの属性設定
3. RemoteWebDriverクラスを使用してWebDriver生成
Pythonで呼び出すdriver = webdriver.Remote(
command_executor=
‘サーバのURL’,
desired_capabilities={
'chromeOptions': {
'androidPackage': 'com.android.chrome',},
‘browserName’: ‘chrome’,
‘platform’: ‘WINDOWS’,
‘version’: ‘Android’})
Rubyで呼び出す
capabilities =
Selenium::WebDriver::Remote::Capabilities.chrome("chromeOptions" =>
{"androidPackage" => 'com.android.chrome'}
:version => “Android")
driver =
Selenium::WebDriver.for(
:remote, :url => "サーバのURL ",:desired_capabilities => capabilities)
Javaで呼び出すChromeOptions chromeOptions =
new ChromeOptions();
chromeOptions.setExperimentalOption(
"androidPackage", "com.android.chrome");
capability = new DesiredCapabilities();
capability.setCapability(
ChromeOptions.CAPABILITY, chromeOptions);
driver =
new RemoteWebDriver(
new URL("サーバのURL "),
capability);
C#で呼び出すDesiredCapabilities capability =
DesiredCapabilities.Chrome();
capability.SetCapability("browserName", "chrome");
capability.SetCapability("platform", "WINDOWS");
capability.SetCapability("version", "android local");
capability.SetCapability(
"chromeOptions",
new Dictionary<string, object> {
{ "androidPackage", "com.android.chrome" }
});
IWebDriver driver =
new RemoteWebDriver(
new Uri("サーバのURL "), capability);
Android の Google Chrome を自動実行
• 用意するハードウェア
– パソコン(Mac, Windows, Linux)
– Android の端末
– パソコンとAndroidを繋ぐUSB通信ケーブル
• 用意するソフトウェア
– Android SDK ToolsAndroid端末制御用
– Chrome DriverGoogle Chrome制御用
– Selenium Grid (option)
– Selenium WebDriverで書かれたプログラム
おしまい(^.^)/~~~