プログラミング逆引き辞典

~ 多言語対応のプログラミングレシピ ~

Seleniumの基本操作

■環境

・OS:Windows
・言語:Java11
・ビルドツール:Gradle
・ブラウザ:Google Chrome
 
 

■事前準備

・Seleniumを依存関係に追加する為に「build.gradle」に下記を記述

implementation 'org.seleniumhq.selenium:selenium-java:3.141.59'

 
 

・Chromeドライバーをダウンロードして、任意のフォルダに格納

※Chromeのバージョンに合ったドライバーをダウンロードする
※Windows64bitの場合も32bit版で問題ない
 
Chrome Driver
 
 


■Chromeドライバーのパスをシステム変数に設定

System.setProperty(ChromeDriverService.CHROME_DRIVER_EXE_PROPERTY, "任意のフォルダに格納したChromeドライバーのパス");

//例
System.setProperty(ChromeDriverService.CHROME_DRIVER_EXE_PROPERTY, "C:/ChromeDriver/chromedriver.exe");

 
 


■Chromeドライバーのインスタンス作成

WebDriver driver = new ChromeDriver();

 
 


■暗黙的な待機の設定(ブラウザ操作時の要素を見つけるまで最大5秒待つ)

driver.manage().timeouts().implicitlyWait(待ち時間, 単位);

//例
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);

 
 


■サイトへのアクセス

driver.get("URL");

//例
driver.get("https://learning-collection.com/");

 
 


■ブラウザ要素の取得

・id属性の値を用いて要素を指定

WebElement element = driver.findElement(By.id("id属性"));

 
 

・name属性の値を用いて要素を指定

WebElement element = driver.findElement(By.name("name属性"));

 
 

・XPathを用いて要素を指定

WebElement element = driver.findElement(By.xpath("XPath"));

 
 

・HTMLタグ名用いて要素を指定

WebElement element = driver.findElement(By.tagName("XPath"));

 
 

・クラス属性を用いて要素を指定

WebElement element = driver.findElement(By.className("クラス属性"));

 
 

・a要素の文字列を用いて要素を指定

WebElement element = driver.findElement(By.linkText("a要素"));

 
 

・a要素の部分文字列を用いて要素を指定

WebElement element = driver.findElement(By.partialLinkText("a要素の部分文字列"));

 
 

・CSSセレクタを用いて要素を指定

WebElement element = driver.findElement(By.cssSelector("CSSセレクタ"));

 
 


■ブラウザ操作

取得したブラウザ要素に対して操作する
 

・id属性のテキストボックスに入力

driver.findElement(By.id("id属性")).sendKeys("入力値");

 
 

・id属性をEnterキーで押下

driver.findElement(By.id("id属性")).sendKeys("Keys.ENTER");

 
 

・id属性をクリック

driver.findElement(By.id("id属性")).click();

 
 


・id属性のvalue値を取得

driver.findElement(By.id("id属性")).getText();

 
 


・複数存在するclass属性のvalue値を取得

WebElement element = driver.findElement(By.id("id属性"));
List<WebElement> el = element.findElements(By.className("class属性"));
el.forEach(e -> System.out.println(e.getText()));

 
 


■画面のウィンドウハンドルを取得

String mainHandle = driver.getWindowHandle();

 
 


■ウィンドウハンドル取得

//Seleniumで現在開いている画面を全て取得
Set<String> handles = driver.getWindowHandles();

//1画面ずつウィンドウハンドルを出力
for (String handle : handles) {
    //ウィンドウハンドル出力
    System.out.println(handle);
}

 
 


■ウィンドウ切替

driver.switchTo().window("ウィンドウハンドル名");

 
 


■現在のURLを取得

driver.getCurrentUrl();

 
 


■ブラウザの戻るボタン押下

driver.navigate().back();

 
 


■ブラウザの次へボタン押下

driver.navigate().forward();

 
 


■ブラウザ更新

driver.navigate().refresh();

 
 


■ウィンドウまたはタブを閉じる

driver.close();

 
 


■プロセス終了

driver.quit();