こんにちは!
みなさん、各ブラウザでのWebDriverの実装状況、毎日見てますよね!!!???!!!?!
- WebDriver implementation report
GitHub上のこのリンク集を見ていると、ンッなんだこれは見慣れないな、と目に留まるものがあるわけです。
「WebKit GTK port」
なんですかこれは。わからないな。1
WebKitGTK+
GNOMEプラットフォーム公式のWebエンジンです。
2018年7月29日現在での最新バージョンは2.21.5です。
ベンダー中立なオープンソースのWebエンジンとして、貴重な存在だと思われます。
WebDriverサポートが始まったのは、2017年9月リリースのバージョン2.18からです。
リリース時、GNOMEのコントリビューターのひとりである Carlos Garcia Campos がブログに解説記事を掲載しています。
https://blogs.igalia.com/carlosgc/2017/09/09/webdriver-support-in-webkitgtk-2-18/
昔のWebKitGTKはヘッドレス動作できたような気がするのですが、現行バージョンではヘッドレス動作するオプションが無いようです。今後に期待したいですね。
Seleniumの対応状況
Selenium公式の言語バインディングでは、バージョン3.8.0からいち早くPythonが対応しています。
しかし残念なことに、他の言語バインディングでは対応が進んでいません。
実際に使ってみよう
現状、気軽に使えるプラットフォームは Ubuntu Linux 18.04 LTS と Fedora くらいのようです。
Ubuntu Linux 18.04 LTS では、次のように apt
で気軽にインストールできます。
$ sudo apt install webkit2gtk-driver
以前紹介したjBrowserDriverのように 2 、ブラウザドライバがミニブラウザを内包しているつくりのようです。環境構築が手軽ですね。
ベンチマーク
日本Seleniumユーザーコミュニティの提供するサンプルページ上で基本的なAPIを100回実行して、1回あたりの平均値を取得するだけの簡易ベンチマークをやりました。
https://github.com/hiroshitoda/WebDriverBenchmark.py
実行環境はAWS上のc5.largeインスタンスです。
結果は次の通りでした。
あんまり速くないですが、操作ごとに速度があまり変わらないのが気になりますね。ブラウザ操作というよりは、Webサーバーとしての動作が遅いのかもしれず、まだまだ最適化の余地があるのかもしれませんね。
ChromeDriver | FirefoxDriver via GeckoDriver | WebKitGtkDriver | |
webdriver.get | 54ms | 95ms | 298ms |
find_element_by_id | 7ms | 9ms | 89ms |
find_element_by_css_selector | 6ms | 8ms | 86ms |
clear | 16ms | 8ms | 87ms |
send_keys | 31ms | 11ms | 96ms |
click | 34ms | 214ms | 91ms |
get_screenshot_as_base64 | 81ms | 124ms | 110ms |
私もあまり動作検証ができていないのですが、動作時のリソース消費や安定性、Raspbianでの動作の感じなど、もうちょっと調べてみたいところですね。