2016 seleniumゆく年くる年 @ 第4回 日本seleniumユーザーコミュニティ勉強会

39
2016年12月18日 戸田 広 ~最近のSelenium~

Upload: hiroshi-toda

Post on 07-Jan-2017

1.431 views

Category:

Software


4 download

TRANSCRIPT

2016�

セレニウム�

ゆく年くる年�

2016年12月18日 戸田 広

~最近のSelenium~

自己紹介

• 戸田 広(とだ ひろし) @hiroshitoda • 1979年生まれ 37歳 • Seleniumを触り始めたのは2013年4月頃から。 • Seleniumを触り始めてから10kg太りました。 •  きっと自動化がうまくいって怠けているからに違いない!!!

今年2月に共著「Selenium実践入門」が発売されました

• 皆様ありがとうございました。 • Amazonを見たら「ベストセラー1位」になっていました。 • ヒューヒュー

ん?

• 謎カテゴリーのベストセラー1位おめでとうございます。

今日話すこと

今年 2016年も、 Selenium / Appium には大きな変化が続きました。 ここらでひとつ、現状を振り返ってまとめてみましょう。 1.  Selenium 3 で変わったこと 2.  Selenium 最近のブラウザー対応状況 3.  最近と、これからの Selenium IDE 4.  Appium 1.6 重箱の隅っこ

Selenium 3 で変わったこと

有楽町のSeleniumを使っているサラリーマン100人に聞きました

• Selenium 3 が2016年11月にリリースされました! • Selenium 3 で変わったことは?

※イメージです、真に受けるな

「何も変わらなかった」

• Selenium 3 は、WebDriverに関しては ほぼマイナーバージョンアップの規模の変更に とどまりました。 • WebDriverや、WebDriverのラッパーを利用した 既存のコードについて、特段変更すべき点はありません。 •  Selenide •  FluentLenium •  Capybara •  Codeception

ここで、Seleniumの系譜を考えてみましょう

• かつての Selenium WebDriver (Selenium 2) は、 Selenium RC と WebDriver を アンッー したものでした。

ここで、Seleniumの系譜を考えてみましょう

•  Selenium 3 は、WebDriverのみのパッケージになりました。 Selenium RC は別のパッケージ(leg-rc)に切り離されました。 •  つまり、Selenium RCにさえ依存していなければ Selenium 3 に更新しても影響はほぼありません。

•  というのは半分 公式の受け売りで、 Javaバインディングでは Java 8 以上が必須になったり Rubyバインディングでは Ruby 2.0 以上が必須になるなど 実行環境での大きい変更が無くもないです。 導入計画は気をつけて立てましょう!

「秘伝のツールが動かなくなった」

「秘伝のツールが動かなくなった」

• RCに依存している秘伝のツールを使っている場合は、 単純に Selenium 3 に更新できません。 •  名前空間が com.thoughtworks ベースに変わったうえ、

Selenium 3 で leg-rc パッケージとして完全に切り離されました。

•  じゃあ leg-rc パッケージを使えば問題ないかと言うと、 内部処理が WebDriver-backed ベースの処理に変わっているため 移行できず切り捨てられたAPIもあります。要注意!!!

• 秘伝のツールの移行時には検証と対策が必須です。

<dependency><groupId>org.seleniumhq.selenium</groupId><ar8factId>selenium-leg-rc</ar8factId><version>3.0.1</version></dependency>

「秘伝のツールが動かなくなった」

• 秘伝のツールと言えば Selenium IDE •  selenium-server-standalone.jar の –htmlSuite オプションで

Selenium IDE が出力する Selenese HTML を使っている場合、 単純に Selenium 3 に更新すると動かなくなってしまいます。 •  もろに leg-rc パッケージの対応範囲ということですね。

•  Selenium 3 からは、代わりに配布されるようになった selenium-html-runner.jar (WebDriver-backedベース) を 使うのが手軽です。

「Firefoxが動かなくなった」

「Firefoxが動かなくなった」

• Selenium 3 のリリース前後で たまたまいくつかの主要ブラウザーにおいて WebDriver への対応状況が大きく変わり、 古いコードで動かなくなっている場合があります。

• これを Selenium 3 のせいと言うのは酷なもの…

┌─────┐│ 偶然だぞ │└∩───∩┘  ヽ(`・ω・)ノ

Selenium 最近のブラウザー対応状況

Selenium 最近のブラウザー対応状況、ざっくり言うと…

•  以前から大きく状況が変わらないブラウザー •  ChromeDriver (Google Chrome/Chromium) •  InternetExplorerDriver (InternetExplorer) •  EdgeDriver (Microsoft Edge)

•  めちゃめちゃ変わっちゃったブラウザー •  FirefoxDriver (Firefox) •  SafariDriver (Safari)

•  プロジェクトが独立したブラウザー •  HtmlUnitDriver

•  最近微妙なやつ •  OperaDriver (Opera) •  GhostDriver (PhantomJS)

以前から大きく状況が変わらないブラウザー

• ChromeDriver (Google Chrome/Chromium) •  特に変わりなし。

•  InternetExplorerDriver (InternetExplorer) •  特に変わりなし。

• EdgeDriver (Microsoft Edge) •  状況は特に変わりなし。 •  Release 14393 から

sendKeys でマルチバイト文字列が通るようになりました!! •  ダウンロードセンターで入手できるインストーラーは

古くて不具合もあるので捨てましょう。

めちゃめちゃ変わっちゃったブラウザー

•  FirefoxDriver (Firefox) •  未署名アドオンが使えなくなってしまったことなどから

GeckoDriverの併用が必須になりました。 •  GeckoDriverは、Firefox内蔵の「Marionette」のプロトコルと

WebDriverのプロトコルの相互変換プロキシーとして動作します。 •  Marionetteを捨てて直接WebDriverに対応しないのかなウッ頭が •  最新バージョンは 0.11.1 です。発展途上です! •  Actions未対応です!!

•  以前のFirefoxDriverは、古いFirefoxに対してはまだ使えます。 法人向けFirefox ESR 45との併用で 2017年6月まで問題なく使えると考えて良いでしょう。

めちゃめちゃ変わっちゃったブラウザー

• SafariDriver (Safari) •  Safari 10 から、Apple純正のSafariDriverが

ブラウザーと合わせて、OSに同梱されるようになりました。 オープンソース版のSafariDriverは使えなくなりました。

•  だいたいSafariのアップデートと同時に更新されます。 •  WebKit Blog の記事に、どのようなオプションやcapabilitiesが使

えるか書かれています。ヘルプよりちょっと詳しいぞ!! https://webkit.org/blog/6900/webdriver-support-in-safari-10/

•  Safari Technology Preview には 開発中の SafariDriver が同梱されています。

プロジェクトが独立したブラウザー

• HtmlUnitDriver •  Selenium 3 になったタイミングで、

Selenium本体からプロジェクトが切り離されました。 •  https://github.com/SeleniumHQ/htmlunit-driver •  地道に更新され続けています。

最近微妙なやつ

• OperaDriver (Opera) •  Operaは2013年からChromiumベースだからなあ… •  独立して管理されていますが、2015年で更新が止まっています。 •  https://github.com/operasoftware/operaprestodriver •  https://github.com/operasoftware/operachromiumdriver

•  なお、Operaは2016年6月に一部買収されました。 この先生きのこるには     _,,...,_

  /_~,,..::: ~"'ヽ (,,"ヾ  ii /^',)

    :i    i"    | (,,゚Д゚)

    |(ノ  |)       |    |    ヽ _ノ

     U"U

最近微妙なやつ

• GhostDriver (PhantomJS) •  本家の detro/ghostdriver が死にそうです!!!

•  この先生きのこるために、メンテナー募集中です。 •  代替に jBrowserDriver の利用を README.md で薦めるありさま…

•  codeborne/ghostdriver がいいかも? •  最新版は 2016年9月22日リリースで停滞

•  jesg/ghostdriver が最近活発。

    _,,...,_  /_~,,..::: ~"'ヽ (,,"ヾ  ii /^',)

    :i    i"    | (,,゚Д゚)

    |(ノ  |)       |    |    ヽ _ノ

     U"U

最近と、 これからの Selenium IDE

最近と、これからの Selenium IDE

• Selenium IDE も、Selenium Builder も、 このままだと来年 2017年中に死にます。 •  どちらもXUL/XPCOMベースなのですが、

2017年11月28日リリース予定のFirefox 57から 拡張機能でXUL/XPCOMがサポートされなくなるからです。

•  Google Chrome や Microsoft Edge で採用されている WebExtensions ベースの拡張機能に 生まれ変わらなければなりませんが、移行は現状ではぜんぜん…

• どうしても延命したい人は Firefox ESR 52 を使い続けましょう。 2018年中頃までサポートされる予定です。

最近と、これからの Selenium IDE

• この先生きのこるには

• そもそも、 Selenium IDE / Selenium Builder のようなツールを 作る責務は、今後 ブラウザー開発プロジェクトのものに なっていく可能性もあるのではないでしょうか? •  Firebugの大部分の機能が

Firefox標準の開発ツールになったように…

    _,,...,_  /_~,,..::: ~"'ヽ (,,"ヾ  ii /^',)

    :i    i"    | (,,゚Д゚)

    |(ノ  |)       |    |    ヽ _ノ

     U"U

Appium 1.6 重箱の隅っこ

Appium 1.5 → 1.6 の変更点はとても多い

• Appium 1.6 •  Appium 1.6.0 2016年10月11日リリース •  Appium 1.6.1 2016年11月25日リリース •  JS Foundation 傘下になってから最初のリリースです。

•  Appium 1.6.2 2016年12月2日リリース •  Appium 1.6.3 2016年12月13日リリース

•  iOS/Androidについては 太田さんから詳しくご解説いただけるはず!!! • 戸田からはニッチなところをご紹介します。

Appium 1.6.0 のリリースノート

• Windows desktop applications • You.i TV

なんだこれ  どうせ使ってねえんだろ? 無視しちまえよ。        ____       /    \          ちゃんと調べて勉強会で説明するんだお!     |\/  ノ' ヾ  \/|    |/ ≪①>  <①≫ \|           ⊂ニニ⊃    |     (__人__)     |            ____ノ L     \、  ` ^^^^ ´  ,/           /\ /  ⌒    / ヾ  `ー‐" " ⌒ヽ         /(○) (○) \    /       ヾ ,"      \      /   (__人__)    \    |   r         r\,"⌒ヽ   |      |::::::|      |    :::::: ::;;::  ,,, ;;::: ,,::;;;;::::''       \    l;;;;;;l     /l!| !     ::::;; ::::::: ;; :::: ::::::::;;;::::::::;; γ⌒⌒/   `ー'     \⌒⌒ヽ      ::::::::;;::::::;; :::::::;;;:::::     (_ノノ/          ヽ !l ヽしし_)        :::::::::::;;:: ::::::::       (   丶- 、           しE |           ::::::;;;::::::::;;;;        `ー、_ノ          ∑ l、E ノ (  バン! バン!            :::::: :::::::           ::::::;; ::::::: ::::: :::::;;   ⌒              :::::::::          :::::;;; ::::::::::::::: :::;                ::;;::./ ̄ ̄ ̄\ :::;;;;::::::::;;;;;;;:::''                / ─    ─ \  ハァハァ…               /  <○>  <○>  \               |    (__人__)    |               \     `⌒J´   /               /              \

Appium と

Windows desktop applications

Windows desktop applications

• 実は2016年3月頃から Microsoft が Windows Application Driver を作ってて、 Appium は 1.6.0 から対応しました。 •  https://github.com/Microsoft/WinAppDriver

• 最新バージョンは 0.7-beta です。発展途上です!!! • UWPアプリとWin32アプリに対応しています。 • Windows 10 用かな? •  Windows Vista, 7, 8 でWindowsアプリに対応したい場合は

Appium ではなく Winium を使いましょう。 •  https://github.com/2gis/Winium

Windows desktop applications

• Windows SDK に同梱されている解析ツール 「Inspect」でロケーター用のIDやクラス名がわかります。

Appium と

You.i TV

You.i TV

• カナダ・オタワが拠点の企業「You.i TV」が作っている 映像アプリ開発に特化した商用SDKです。 •  http://www.youi.tv/

• クロスプラットフォーム、レスポンシブUIに対応。 •  iOS, tvOS, Android, Android TV,

PlayStation, Xbox, Amazon Fire TV • PhotoshopとAfterEffectsで作りこんだUIを 開発用リソースファイルとして出力して C++などのコードとバインドできるらしいです。 • 開発者向けの紹介資料までなら、無料登録で読めます。

You.i TV

• とにかく情報が少ないのでいろいろと個人的な妄想 •  映像アプリにおけるUnityみたいなものかな? •  SDKにはE2Eテストの標準サポートも組み込むべき、

という風潮の萌芽なのかな? •  UnityにUnityDriverみたいなものがあったら良いのに、

と思った人は少なくないはずです。 •  新しい潮流で、非常に興味深いですね。

•  Appiumプロジェクトとしてどんな期待があるのかな? •  リリースノートを読む限り、歓迎ムードがかなり強いのですが

なぜ歓迎しているのか、動機や理由がいまいちつかめていません。

なんとなくまとめ

なんとなくまとめ

• WebDriver標準化への流れが徐々に進んでいます。 WebDriverを当たり前に使っている人には 気づきにくい変化かもしれません。 • WebDriver対応が 各ソフトウェアベンダーの責務であるという雰囲気が いよいよ現実的なものになってきた気がします。

ご静聴 ありがとうございました。 また来年~~~