13
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

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

Last updated at Posted at 2022-06-12

個人開発で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();
			}
		}
}

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

13
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?