selendroid 0.4.2 その2(Android アプリ自動テストツール)
capabilityの設定をさぐりさぐり、牛歩のごとく。
実機で動かす前にエミュレータで動かしてみることにしてみる。
あらかじめ エミュレータを起動してたらエラーがでていた。
なので、起動せずにテストスクリプトを動かしたところ、おもむろにエミュレータを起動して・・・
起動する前にタイムアウトで落ちるという罠。
続けてもう一度テストスクリプトを動かしてみると、何と起動したではないですか!!
見ていると、そのまま テスト対象apkをインストールしてますね。
doli:selendroid_test Dolias$ java -jar selendroid-standalone-0.4.2.jar -app ./com.android.vending-1.apk 2013/08/08 0:05:51 io.selendroid.SelendroidLauncher main ???: ################# Selendroid ################# 2013/08/08 0:05:51 io.selendroid.SelendroidLauncher lauchServer ???: Starting selendroid-server port 5555 2013/08/08 0:05:51 io.selendroid.io.ShellCommand exec ???: executing command: /Users/Dolias/Devroom/android-sdk/build-tools/android-4.2.2/aapt remove /Users/Dolias/Devroom/selendroid_test/./com.android.vending-1.apk META-INF/MANIFEST.MF 2013/08/08 0:05:51 io.selendroid.io.ShellCommand exec ???: executing command: /Users/Dolias/Devroom/android-sdk/build-tools/android-4.2.2/aapt remove /Users/Dolias/Devroom/selendroid_test/./com.android.vending-1.apk META-INF/CERT.RSA 2013/08/08 0:05:51 io.selendroid.io.ShellCommand exec ???: executing command: /Users/Dolias/Devroom/android-sdk/build-tools/android-4.2.2/aapt remove /Users/Dolias/Devroom/selendroid_test/./com.android.vending-1.apk META-INF/CERT.SF 2013/08/08 0:05:51 io.selendroid.io.ShellCommand exec ???: executing command: /Users/Dolias/Devroom/android-sdk/build-tools/android-4.2.2/aapt remove /Users/Dolias/Devroom/selendroid_test/./com.android.vending-1.apk META-INF/ANDROIDD.SF 2013/08/08 0:05:51 io.selendroid.io.ShellCommand exec ???: executing command: /Users/Dolias/Devroom/android-sdk/build-tools/android-4.2.2/aapt remove /Users/Dolias/Devroom/selendroid_test/./com.android.vending-1.apk META-INF/ANDROIDD.RSA 2013/08/08 0:05:54 io.selendroid.builder.SelendroidServerBuilder signTestServer ???: App signing output: 2013/08/08 0:05:54 io.selendroid.builder.SelendroidServerBuilder signTestServer ???: The app has been signed: /Users/Dolias/Devroom/selendroid_test/./resigned-com.android.vending-1.apk 2013/08/08 0:05:54 io.selendroid.io.ShellCommand exec ???: executing command: /Users/Dolias/Devroom/android-sdk/build-tools/android-4.2.2/aapt dump badging /Users/Dolias/Devroom/selendroid_test/./resigned-com.android.vending-1.apk 2013/08/08 0:05:54 io.selendroid.io.ShellCommand exec ???: executing command: /Users/Dolias/Devroom/android-sdk/build-tools/android-4.2.2/aapt dump badging /Users/Dolias/Devroom/selendroid_test/./resigned-com.android.vending-1.apk 2013/08/08 0:05:54 io.selendroid.server.model.SelendroidStandaloneDriver initApplicationsUnderTest ???: App com.android.vending:4.1.6 has been added to selendroid standalone server. 2013/08/08 0:05:54 io.selendroid.io.ShellCommand exec ???: executing command: /Users/Dolias/Devroom/android-sdk/tools/android list avds 2013/08/08 0:05:56 io.selendroid.server.model.DeviceStore addEmulators ???: Adding: AndroidEmulator [screenSize=800x1280, targetPlatform=ANDROID17, avdName=Nexus7] 2013/08/08 0:05:56 io.selendroid.io.ShellCommand exec ???: executing command: /Users/Dolias/Devroom/android-sdk/platform-tools/adb devices -l 2013/08/08 0:05:56 io.selendroid.server.model.DeviceStore addDevices ???: No Android devices were found. 2013/08/08 0:05:56 io.selendroid.server.SelendroidStandaloneServer start ???: selendroid-standalone server has been started on port: 5555 2013/08/08 0:06:02 io.selendroid.server.handler.CreateSessionHandler handle ???: new session command with capabilities: {"desiredCapabilities": { "aut": "com.android.vending:4.1.6", "browserName": "android", "cssSelectorsEnabled": false, "javascriptEnabled": false, "maxInstances": "1", "nativeEvents": false, "platform": "[\"NEXUS7\", NIL]", "rotatable": true, "takesScreenshot": true, "version": "5" }} 2013/08/08 0:06:02 io.selendroid.android.impl.DefaultAndroidEmulator start ???: Using timeout of '120' seconds to start the emulator. 2013/08/08 0:06:02 io.selendroid.io.ShellCommand execAsync ???: executing async command: /Users/Dolias/Devroom/android-sdk/tools/emulator -avd Nexus7 -ports 5560,5561 2013/08/08 0:06:02 io.selendroid.io.ShellCommand exec ???: executing command: /Users/Dolias/Devroom/android-sdk/platform-tools/adb -s emulator-5560 shell getprop init.svc.bootanim 2013/08/08 0:08:03 io.selendroid.io.ShellCommand exec ???: executing command: /Users/Dolias/Devroom/android-sdk/platform-tools/adb -s emulator-5560 shell getprop init.svc.bootanim 2013/08/08 0:08:03 io.selendroid.io.ShellCommand exec ???: executing command: /Users/Dolias/Devroom/android-sdk/platform-tools/adb -s emulator-5560 emu kill 2013/08/08 0:08:03 io.selendroid.server.handler.CreateSessionHandler handle ?v???I: Error while creating new session: Error occured while interacting with the emulator: AndroidEmulator [screenSize=800x1280, targetPlatform=ANDROID17, avdName=Nexus7]: The emulator with avd 'Nexus7' was not started after 121 seconds. 2013/08/08 0:08:17 io.selendroid.server.handler.CreateSessionHandler handle ???: new session command with capabilities: {"desiredCapabilities": { "aut": "com.android.vending:4.1.6", "browserName": "android", "cssSelectorsEnabled": false, "javascriptEnabled": false, "maxInstances": "1", "nativeEvents": false, "platform": "[\"NEXUS7\", NIL]", "rotatable": true, "takesScreenshot": true, "version": "5" }} 2013/08/08 0:08:17 io.selendroid.android.impl.DefaultAndroidEmulator start ???: Using timeout of '120' seconds to start the emulator. 2013/08/08 0:08:17 io.selendroid.io.ShellCommand execAsync ???: executing async command: /Users/Dolias/Devroom/android-sdk/tools/emulator -avd Nexus7 -ports 5560,5561 2013/08/08 0:08:17 io.selendroid.io.ShellCommand exec ???: executing command: /Users/Dolias/Devroom/android-sdk/platform-tools/adb -s emulator-5560 shell getprop init.svc.bootanim 2013/08/08 0:10:16 io.selendroid.io.ShellCommand exec ???: executing command: /Users/Dolias/Devroom/android-sdk/platform-tools/adb -s emulator-5560 shell getprop init.svc.bootanim 2013/08/08 0:10:17 io.selendroid.android.impl.DefaultAndroidEmulator start ???: Emulator start took: 119 seconds 2013/08/08 0:10:17 io.selendroid.android.impl.DefaultAndroidEmulator start ???: Please have in mind, starting an emulator takes usually about 45 seconds. 2013/08/08 0:10:17 io.selendroid.io.ShellCommand exec ???: executing command: /Users/Dolias/Devroom/android-sdk/platform-tools/adb -s emulator-5560 shell input keyevent 82 2013/08/08 0:10:26 io.selendroid.io.ShellCommand exec ???: executing command: /Users/Dolias/Devroom/android-sdk/platform-tools/adb -s emulator-5560 shell input 4 2013/08/08 0:10:29 io.selendroid.builder.SelendroidServerBuilder createSelendroidServer ???: create SelendroidServer for apk: /Users/Dolias/Devroom/selendroid_test/./resigned-com.android.vending-1.apk 2013/08/08 0:10:30 io.selendroid.builder.SelendroidServerBuilder init ???: Creating customized Selendroid-server: /var/folders/8m/ykwl2br119z5wkzwjsf31ghr0000gn/T/selendroid-server2872075215006003377.apk 2013/08/08 0:10:30 io.selendroid.io.ShellCommand exec ???: executing command: /Users/Dolias/Devroom/android-sdk/build-tools/android-4.2.2/aapt remove /var/folders/8m/ykwl2br119z5wkzwjsf31ghr0000gn/T/selendroid-server2872075215006003377.apk META-INF/CERT.RSA 2013/08/08 0:10:30 io.selendroid.io.ShellCommand exec ???: executing command: /Users/Dolias/Devroom/android-sdk/build-tools/android-4.2.2/aapt remove /var/folders/8m/ykwl2br119z5wkzwjsf31ghr0000gn/T/selendroid-server2872075215006003377.apk META-INF/CERT.SF 2013/08/08 0:10:30 io.selendroid.io.ShellCommand exec ???: executing command: /Users/Dolias/Devroom/android-sdk/build-tools/android-4.2.2/aapt remove /var/folders/8m/ykwl2br119z5wkzwjsf31ghr0000gn/T/selendroid-server2872075215006003377.apk AndroidManifest.xml 2013/08/08 0:10:30 io.selendroid.io.ShellCommand exec ???: executing command: /Users/Dolias/Devroom/android-sdk/build-tools/android-4.2.2/aapt dump badging /Users/Dolias/Devroom/selendroid_test/./resigned-com.android.vending-1.apk 2013/08/08 0:10:30 io.selendroid.builder.SelendroidServerBuilder createAndAddCustomizedAndroidManifestToSelendroidServer ???: Adding target package 'com.android.vending' to /var/folders/8m/ykwl2br119z5wkzwjsf31ghr0000gn/T/com.android.vending1375888230314/AndroidManifest.xml 2013/08/08 0:10:30 io.selendroid.io.ShellCommand exec ???: executing command: /Users/Dolias/Devroom/android-sdk/build-tools/android-4.2.2/aapt package -M /var/folders/8m/ykwl2br119z5wkzwjsf31ghr0000gn/T/com.android.vending1375888230314/AndroidManifest.xml -I /Users/Dolias/Devroom/android-sdk/platforms/android-18/android.jar -F /var/folders/8m/ykwl2br119z5wkzwjsf31ghr0000gn/T/com.android.vending1375888230314/manifest.apk -f 2013/08/08 0:10:30 io.selendroid.builder.SelendroidServerBuilder createAndAddCustomizedAndroidManifestToSelendroidServer ???: 2013/08/08 0:10:30 io.selendroid.builder.SelendroidServerBuilder createAndAddCustomizedAndroidManifestToSelendroidServer ???: file: /var/folders/8m/ykwl2br119z5wkzwjsf31ghr0000gn/T/com.android.vending1375888230314selendroid-server.apk 2013/08/08 0:10:32 io.selendroid.builder.SelendroidServerBuilder signTestServer ???: App signing output: 2013/08/08 0:10:32 io.selendroid.builder.SelendroidServerBuilder signTestServer ???: The app has been signed: /Users/Dolias/Devroom/selendroid_test/selendroid-server-com.android.vending-0.4.0.apk 2013/08/08 0:10:32 io.selendroid.io.ShellCommand exec ???: executing command: /Users/Dolias/Devroom/android-sdk/platform-tools/adb -s emulator-5560 shell pm list packages com.android.vending 2013/08/08 0:10:35 io.selendroid.io.ShellCommand exec ???: executing command: /Users/Dolias/Devroom/android-sdk/platform-tools/adb -s emulator-5560 uninstall com.android.vending 2013/08/08 0:10:50 io.selendroid.io.ShellCommand exec ???: executing command: /Users/Dolias/Devroom/android-sdk/platform-tools/adb -s emulator-5560 install -r /Users/Dolias/Devroom/selendroid_test/./resigned-com.android.vending-1.apk io.selendroid.exceptions.ShellCommandException: An error occured while executing shell command: /Users/Dolias/Devroom/android-sdk/platform-tools/adb -s emulator-5560 install -r /Users/Dolias/Devroom/selendroid_test/./resigned-com.android.vending-1.apk at io.selendroid.io.ShellCommand.exec(ShellCommand.java:51) at io.selendroid.io.ShellCommand.exec(ShellCommand.java:63) at io.selendroid.io.ShellCommand.exec(ShellCommand.java:38) at io.selendroid.android.impl.AbstractDevice.executeCommand(AbstractDevice.java:116) at io.selendroid.android.impl.AbstractDevice.install(AbstractDevice.java:111) at io.selendroid.server.model.SelendroidStandaloneDriver.createNewTestSession(SelendroidStandaloneDriver.java:252) at io.selendroid.server.handler.CreateSessionHandler.handle(CreateSessionHandler.java:42) at io.selendroid.server.SelendroidServlet.handleRequest(SelendroidServlet.java:95) at io.selendroid.server.BaseServlet.handleHttpRequest(BaseServlet.java:81) at org.webbitserver.netty.NettyHttpControl.nextHandler(NettyHttpControl.java:78) at org.webbitserver.netty.NettyHttpControl.nextHandler(NettyHttpControl.java:62) at org.webbitserver.handler.PathMatchHandler.handleHttpRequest(PathMatchHandler.java:33) at org.webbitserver.netty.NettyHttpControl.nextHandler(NettyHttpControl.java:78) at org.webbitserver.netty.NettyHttpControl.nextHandler(NettyHttpControl.java:62) at org.webbitserver.handler.DateHeaderHandler.handleHttpRequest(DateHeaderHandler.java:21) at org.webbitserver.netty.NettyHttpControl.nextHandler(NettyHttpControl.java:78) at org.webbitserver.netty.NettyHttpControl.nextHandler(NettyHttpControl.java:62) at org.webbitserver.handler.ServerHeaderHandler.handleHttpRequest(ServerHeaderHandler.java:25) at org.webbitserver.netty.NettyHttpControl.nextHandler(NettyHttpControl.java:78) at org.webbitserver.netty.NettyHttpControl.nextHandler(NettyHttpControl.java:67) at org.webbitserver.netty.NettyHttpChannelHandler$2.run(NettyHttpChannelHandler.java:72) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) at java.lang.Thread.run(Thread.java:680) Caused by: io.selendroid.exceptions.ShellCommandException: 2404 KB/s (6041568 bytes in 2.453s) pkg: /data/local/tmp/resigned-com.android.vending-1.apk ... 24 more 2013/08/08 0:11:10 io.selendroid.io.ShellCommand exec ???: executing command: /Users/Dolias/Devroom/android-sdk/build-tools/android-4.2.2/aapt dump badging /Users/Dolias/Devroom/selendroid_test/selendroid-server-com.android.vending-0.4.0.apk 2013/08/08 0:11:10 io.selendroid.io.ShellCommand exec ???: executing command: /Users/Dolias/Devroom/android-sdk/platform-tools/adb -s emulator-5560 shell pm list packages io.selendroid 2013/08/08 0:11:13 io.selendroid.io.ShellCommand exec ???: executing command: /Users/Dolias/Devroom/android-sdk/platform-tools/adb -s emulator-5560 uninstall io.selendroid 2013/08/08 0:11:16 io.selendroid.io.ShellCommand exec ???: executing command: /Users/Dolias/Devroom/android-sdk/platform-tools/adb -s emulator-5560 install -r /Users/Dolias/Devroom/selendroid_test/selendroid-server-com.android.vending-0.4.0.apk 2013/08/08 0:11:22 io.selendroid.io.ShellCommand exec ???: executing command: /Users/Dolias/Devroom/android-sdk/build-tools/android-4.2.2/aapt dump badging /Users/Dolias/Devroom/selendroid_test/./resigned-com.android.vending-1.apk 2013/08/08 0:11:22 io.selendroid.io.ShellCommand exec ???: executing command: /Users/Dolias/Devroom/android-sdk/platform-tools/adb -s emulator-5560 shell am instrument -e main_activity com.android.vending.AssetBrowserActivity io.selendroid/.ServerInstrumentation 2013/08/08 0:11:23 io.selendroid.io.ShellCommand exec ???: executing command: /Users/Dolias/Devroom/android-sdk/platform-tools/adb -s emulator-5560 forward tcp:38080 tcp:8080 2013/08/08 0:11:23 io.selendroid.android.impl.AbstractDevice isSelendroidRunning ???: using url: http://localhost:38080/wd/hub/status 2013/08/08 0:11:24 io.selendroid.android.impl.AbstractDevice isSelendroidRunning ???: got response status code: 200 2013/08/08 0:11:24 io.selendroid.android.impl.AbstractDevice isSelendroidRunning ???: got response value: {status: 0, value: {"supportedApps":[],"build":{"browserName":"selendroid","version":"0.4.2"},"os":{"arch":"x86","version":"17","name":"Android"},"supportedDevices":[]}} 2013/08/08 0:11:25 io.selendroid.server.util.HttpClientUtil executeCreateSessionRequest ???: creating session by using url: http://localhost:38080/wd/hub/session Create new session response: { "sessionId": "a6c2fe96-826f-469f-9628-c1122da37267", "status": 0, "value": { "aut": "com.android.vending:4.1.6", "browserName": "android", "cssSelectorsEnabled": false, "javascriptEnabled": false, "maxInstances": "1", "nativeEvents": false, "platform": "[\"NEXUS7\", NIL]", "rotatable": true, "takesScreenshot": true, "version": "5" } } new Session URL: http://localhost:5555/wd/hub/session/a6c2fe96-826f-469f-9628-c1122da37267
ちょっと前進した?
ちなみに、タイムアウトしてしまうエミュレータは コマンドラインパラメータでタイムアウト時間を変更できるそうな。