#はじめに
-
seleniumを使っている人が一度はハマることに、ブラウザのバージョンとwebdriverのバージョン差異による実行エラーだと思います。
しかもこのエラー、「バージョンが違ってますよ」というメッセージと表示されれば良いのですが、ほとんどが意味不明のエラーになります。
操作ブラウザーが自動更新されていると、「昨日まで動いていたのに?!」状態で、散々ネットで調べた挙句が、「あ、ブラウザのバージョンが上がってた」の流れ。(ちゃんとテスト環境のバージョン管理をされているところだとこんなことにはならないんでしょうね)
また、Seleniumをテスト以外の用途で使っていると、なかなかバージョン管理は難しくなると思います。 -
これをなんとか「自動更新できるようにできないものか?」と考えるのは自然の流れ。で、これをツール化してくださる人がいるわけで。
それが webdrivermanager
ここから
- さて使おうとなるとまず、調査(というなの検索)出てくる記事は
WebDriverManagerを使用してgeckodriver(SeleniumのWebDriver) - Qiita
SelenideでWebDriverManagerを使う - Qiita
WebDriverの更新はWebdriverManagerに任せよう - Qiita
WebDriverManagerを使用してgekcodriverを自動インストール ... - Qiita
どれも テストコードがJavaのケース・・・
- 自分の場合、ツールとして使っているのでJavaのコードを書いていない・・便利そうなのに使えないのか
#Java11からの機能
- そんな時に知ったのが Java11からの機能で Javac をしなくても実行できるというもの
Java11ではjavacせずにJavaファイルが実行できるようになる
これを使えばいいのでは!!ツールを動かすバッチに これを使ってドライバーを更新させれば良いはず。
#公式へ
- Javaがよくわからないですが、どのようにかけば良いかを公式で調べてみる
公式はこちら
https://github.com/bonigarcia/webdrivermanager
- どのドライバーを使うかなど書いてあるわけですが・・・
あれ?
WebDriverManager as Java dependency (typically from test cases).
WebDriverManager as a Command Line Interface (CLI) tool (from the the shell).
WebDriverManager as Server (using HTTP requests).
え?
WebDriverManager as a Command Line Interface (CLI) tool (from the the shell).
#えーっと
- 難しいこと考えなくても公式で用意してくれていました
- しかも jarファイルまで!
>java -jar webdrivermanager-3.2.0-fat.jar chrome
[INFO] Using WebDriverManager to resolve chrome
[INFO] Reading https://chromedriver.storage.googleapis.com/ to seek chromedriver
[INFO] Latest version of chromedriver is 2.37
[INFO] Downloading https://chromedriver.storage.googleapis.com/2.37/chromedriver_win32.zip to folder D:\projects\webdrivermanager
[INFO] Resulting binary D:\projects\webdrivermanager\target\chromedriver.exe
- Selenium使うのでjavaはインストールされているのでただ単に呼び出すだけでOK
#最後に
- まず公式をよく見ろ(英語でも)ということですね
- 既に常識でしたらすいませんとしか・・・
#追記 (2019/05/07)
- 2017年のアドベントカレンダーに2つも記事があることに今気が付いた・・・
https://qiita.com/shimashima35/items/411f99a27b7ec5503532
https://qiita.com/EichiSanden/items/d9c53c61e006a26a549d