6
Help us understand the problem. What are the problem?

posted at

updated at

Organization

Seleniumで利用するDriverの自動更新方法(Java)

個人開発でseleniumを利用しているのだが、Chromeが頻繁に更新されるので、手動更新がめんどくさくなった。
自動更新の仕方を調べ、実際にコーディングし、意図する結果になっているので、整理しておく。

※多少雑だが個人的備忘なのでご了承ください。

なおPythonの記事は以下で記載しているので参考まで。

環境情報

  • Java8
  • Gradle6.7.1
  • Windows 10
  • eclipes photon

※なお対象のdriverはchromedriver

実装

  • build.gradleに以下の記述を追加
dependencies {
	implementation 'org.seleniumhq.selenium:selenium-java:3.12.0'
	compile group: 'org.seleniumhq.selenium', name: 'selenium-chrome-driver', version: '3.12.0'//これ無くても動くかも
	compile group: 'io.github.bonigarcia',name :'webdrivermanager',version:'5.2.0'
}

※seleniumの最新はもっと行っているはず(あと、implementation とcompileの差はわからない。調べてない。)
※記事執筆時点でのwebdrivermanagerの最新は5.2.0が最新のtags
FYI:https://github.com/bonigarcia/webdrivermanager

  • Refresh Gradle Projectを実行

  • 環境に存在しているchromedriverを自動更新する


public void setupChromedriver(){
		// 1. Auto installs
		WebDriverManager.chromedriver().setup();
}

これで勝手に更新してくれる。

場所は、%HOMEPATH%.cache\selenium\chromedriver\win32以下にversionごとにフォルダができて、chromedriver.exeが存在しているはず。

seleniumuで自動テストなどを書いている場合は、実行の都度更新されていないとバージョン差異によって失敗するので、更新ロジックに続けでそのまま処理を書いる。
※そんなことしなくても大丈夫なはず。

  • driverを利用してseleniumで起動、実行
public void setupChromedriver(){
		// 1. Auto installs
		WebDriverManager.chromedriver().setup();
}

public void execute(String url){

		setupChromedriver();//呼び出してdriverを更新しておく

		// 2. use the selenium with the driver
		// headlessで実行したい場合はoptionsに「--headless」を詰めておく
		ChromeOptions options = new ChromeOptions();
		options.addArguments("--headless");

		// インスタンス生成(引数はなくても生成可能)
		WebDriver driver = new ChromeDriver(options);

		try {
			// URL遷移
			driver.get(url);

			// BOMを取得する場合はWebElementのリスト型で取得できる
			// この場合はclassで取得している
			List<WebElement> webElements = driver.findElements(By.className("XXXXX"));

		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if (driver != null) {
				//close ではなくquitにしないとPCのプロセスに残り続ける
				driver.quit();
			}
		}
}

一応こんな感じで実行できることは確認できている。

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
6
Help us understand the problem. What are the problem?