はじめに
自動テストやスクレイピングに使いたくてseleniumを入門しました。
環境
Java:8
ブラウザ:Google Chrome 107.0.5304.110
selenium:4.6.0
webdrivermanager:5.3.1
環境設定
ライブラリを依存関係に追加する
build.gradleに必要なライブラリの依存関係を追加します。
seleniumライブラリである「selenium-java」に加えて、
ブラウザをコントロールする「webdrivermanager」を追加します。
build.gradle
dependencies {
implementation 'org.seleniumhq.selenium:selenium-java:4.6.0'
implementation 'io.github.bonigarcia:webdrivermanager:5.3.1'
// ・・・
}
ブラウザーのドライバーをインストールする
こちらから使用したいブラウザのドライバーをダウンロードします。
今回はgoogle chromeを使用するため、「ChromeDriver 107.0.5304.62」のmac版をダウンロードします。
zip形式なので、解凍して適当な場所に配置します。
注意(ブラウザとドライバーのバージョンは合わせること)
ドライバーはバージョン別に用意されています。
使用するブラウザのバージョンを確認し、合ったドライバーを選んでください。
(最初、特に気にしていなくて実行時エラーが多発しました。。。)
サンプルを実装
Main.java
import io.github.bonigarcia.wdm.WebDriverManager;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import java.time.Duration;
public class Main {
public static void main(String args[]) {
// ドライバーをセットアップし、インスタンス化します。
// 先ほどインストールしたドライバーのパスをここで指定します。
WebDriverManager.chromedriver().setup();
System.setProperty("webdriver.chrome.driver","/opt/chromedriver");
WebDriver driver = new ChromeDriver();
// googleの検索ページに遷移します。
driver.get("https://www.google.com/?hl=ja");
// ブラウザ操作の待ち時間を指定します。
// seleniumは人が操作するより、ずっと速くブラウザを操作します。
// 応答に時間がかかるページでは適宜、待ち時間を指定します。
driver.manage().timeouts().implicitlyWait(Duration.ofMillis(500));
// クラス属性で検索し、テキストボックスの要素を取得します。
WebElement textBox = driver.findElement(By.className("gLFyf"));
// テキストボックスに「Selenium」と入力し、検索を実行します。
textBox.sendKeys("Selenium");
textBox.sendKeys(Keys.ENTER);
// セッションを終了します。
// ※コメントアウトしていますが、外すと最後にブラウザを閉じるようになります。
// driver.quit();
}
}
実装出来たら、サンプルを実行してみます。
chromeが起動し、検索が実行されれば成功です。
参考文献