Help us understand the problem. What is going on with this article?

WebKitGTK+ のWebDriverサポート

More than 1 year has passed since last update.

こんにちは!
みなさん、各ブラウザでのWebDriverの実装状況、毎日見てますよね!!!???!!!?!

GitHub上のこのリンク集を見ていると、ンッなんだこれは見慣れないな、と目に留まるものがあるわけです。
「WebKit GTK port」
なんですかこれは。わからないな。1

WebKitGTK+

https://webkitgtk.org

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での動作の感じなど、もうちょっと調べてみたいところですね。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away