[WebDriver]WebDriver and Mobile JSON Wire Protocol Specification and Appium

I investigated some feature regarding with Selenium3 and associated with it. So, I put some memos I found here. PR for appium_lib to use webdriver-selenium 3.0 in the library https://github.com/appium/ruby_lib/pull/383 Appium server’s routes are: https://github.com/appium/appium-base-driver https://github.com/appium/appium-base-driver/blob/master/lib/mjsonwp/routes.js The routes are based on the following spec: https://github.com/SeleniumHQ/mobile-spec/blob/master/spec-draft.md This spec differs from W3C. So, webdriver-selenium 3.0‘s some commands…More

Appium1.6.0 released !!

https://github.com/appium/appium/releases/tag/v1.6.0 support XCUITest(WebDriverAgent) to test against Xcode8 x above iOS9.3 BTW, this feature has some unstable/known issues support UI Automator 2 for Android I already tried previous its beta version in my company, and then I issued some problems to Appium and it already fixed. I’ll switch to this new version from previous 1.5 in…More

Appium1.4.9 released

Appium1.4.9がリリースされましたね。 https://github.com/appium/appium/releases/tag/v1.4.9 iOS9とXcode7の対応が主です。 以下のPRにもある通り、iOS Simulatorにおいてinstruments-without-delayが効かなくなりました。 https://github.com/facebook/instruments-without-delay/pull/18 これで、Simulatorと実機での実行速度の差分があまりなくなりましたね…悲しい. ※ 1.4.9は依存関係の都合、正しく実行できません。 1.4.10を使いましょう。 https://github.com/appium/appium/issues/5479More

Appium1.4.5(1.4.6)がリリースされ、ROADMAPも追加されてた

1.4.5がリリースされましたね。 fix problem with npm shrinkwrap that caused Appium not to start だそうです。依存関係を持ったライブラリの更新が主な模様。 他、以下が追加された模様です。 iOS only: webviewConnectRetriesの追加 WebViewでコネクション貼るときにretry回数を可変にしたものぽい 他、数週間前にAppium、ROADMAPを追加していましたね。 ちょっと中身みてみました。 いくつか予想していたものがあって、そうだよね〜というものも。 DroidDriver backend integration Apple Watch support iOS 8.4 support https://github.com/appium/appium/blob/master/ROADMAP.md Non-UIAutomation iOS backend これ、Calabashとか参考にすると確かにできそうなのですが、Philosophyを曲げることになるので個人的にはお流れになってほしいような。(Appiumがカバーする領域がぶれそう) 追記(2015/06/20) Appium 1.4.5、npmリリース失敗してましたね。 Appium 1.4.6が re-publish されて実質1.4.5が使えるようになりました。More

Appium x iOSのscrollに対するworkaround

AppiumでiOSアプリに対してスクロール操作を行うとき、以下のworkaroundでうまくいったので、メモ。 Appium1.4.xで動作確認済み。 OS7.0 ~ 8.x系で確認されるOS側不具合で scrollTo やUIAutomatorの scrollToVisible を使うと、以下のようなエラーがでます。 このworkaroundとして、例えばrubyだと以下で回避可能です。 elementは、find_elementなどで取得できうelementを意味します。 ※いつからあったworkaroundだろう。自前で実装してた…More

Appium1.4.0の変更でwaitForAppScriptでテスト開始タイミングを調整する必要があった

Appium 1.4.0から、iOSアプリのテストを行おうとした時にinstrumentsの起動、sessionの確立が成功した後に Error(“App did not have elements”)); とエラーが表示されてテストが中断することが見られるようになりました。 これは、例えばプライバシーダイアログを初回アプリインストール時に表示するような、システムダイアログが表示されるアプリで発生するようになってます。 これは、以下のコードに含まれる https://github.com/appium/appium/blob/2b0ede71d1a2f50376a2edcd15636cfa9e9b8f1e/lib/devices/ios/ios.js#L457 の !IOS.isSpringBoard(sourceObj.UIAApplication) がtrueになるため、はかれるエラーです。 これはアプリ起動直後にSpringBoardが表示されて偽陽性(false positive)を検出してしまうことを避けるために入れられました。ただ、意図してシステムダイアログが出るようなアプリだと、誤ってfalseと判断されるようになりました。 一方、アプリ起動を待つために waitForAppScript というcapabilityが用意されています。これは、独自で定義した条件にマッチするまでテストシナリオの実施を待つ、というものです。これを使うことで、先ほどの問題を回避することが可能です。 例えば、簡単な対応として waitForAppScript:true;“ としておくことで、問題となる条件分岐を通らなくなります。ここら辺をもう少し調整しておくと、柔軟にテスト開始タイミングを調整することも可能ですね。 なお、すでにissueでも報告さえていました。その時の回避策が waitForAppScript の利用です。 https://github.com/appium/appium/issues/4971More

Appium1.4.0とruby_lib7.0.0がリリースされた

Appium1.4.0がBeta外れましたね。今回は、いくつかサポートに関わる気をつけておく内容がありましたのでめもめも。 Appium https://github.com/appium/appium/releases/tag/v1.4.0 いくつかにdeprecateがつきました Node 0.10サポート iOS6.1、iOS7.0サポート(1.5でサポート切るかも) Xcode6.3未満のXcodeサポート Xcode6.0.1+iOS8.0の組み合わせは例外 他は、BugfixやAndroid向けの新しいcapabilityの追加など。 ruby_lib https://github.com/appium/ruby_lib/blob/master/release_notes.md#v700-2015-05-08 わせて7.0.0がリリースされていましたね。本体と一緒にリリースする必要があるといってたので、miniWindowがnilになるときの対応が関係しているのかな。 default waitが0になった resourceIdのバリデーションが追加された install? メソッドが app_installed?にリネームされた rubocop対応More

–suppress-adb-kill-server on Appium 1.4.0

Appium1.4.0で –suppress-adb-kill-server フラグが追加されていたのですね。 このフラグをonにしておけば、Appium Serverが adb kill-server してコネクション切断するということを防ぐことができる模様。 adbコマンドって、ip-address越しでも送ることができることは広く知られていると思います。ネットワーク越しで環境を構築している場合、adbのコネクションが切れると都度接続が必要になります。また、Selenium Gridを使って実施を並列化した環境を整えていると、テスト終わるときにkill-serverされるとadbのコネクションがこぞって切れるようなので、それを防ぐのにも良いとか。More

Appium 1.4.0 betaがリリースされていた

Appiumの1.4.0 betaがリリースされていました。 https://github.com/appium/appium/releases/tag/v1.4.0-beta iOS8.3のサポートだったり、optionの追加というところが目新しそうですね。 Android capabilityとして以下が増えている。 disableAndroidWatchers dontStopAppOnReset dontStopAppOnReset がサポートされたので、シナリオの作成によっては adb install時に -S フラグつけてターゲットのパッケージをprocess killしないようにすうることができるようになるのですね。 Appium Serverへの引数としても、以下が増えている模様。 Capability Description Values –dont-stop-app-on-reset false (Android-only) When included, refrains from stopping the app before restart –debug-log-spacing false Add exaggerated spacing in logs to help with visual inspection –suppress-adb-kill-server false (Android-only) If set, prevents Appium from killing the adb…More