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();