ブラウザ操作やWebアプリケーションテストを自動化したいなぁと思ったことはないでしょうか?
ブラウザ操作を自動化する際は、Selenuimを使用すると便利です。
本記事ではJavaを使用したSelenuimの基本的な使い方を理解することができます。
・Selenuimの使い方
・WebDriverとChromeDriverのダウンロード方法
・Eclipseにドライバを導入する方法
本記事では以下の順番で、解説していきます。
- 必要なドライバをダウンロード
- Eclipseで動作させるための準備
- Selenuimの使い方
目次
Selenuimに対応している言語と対応ブラウザについて
対応している言語、ブラウザは以下の通りです。
対応言語:java、python、C#、Ruby、JavaScript
対応ブラウザ:Firefox、GoogleChrome、InternetExplorer、Safari、MicrosoftEdge
使用環境
- Windows 11
- eclipse 4.2.1
- Javaバージョン 17.0.1
- GoogleChrome 100.0.4896.127
Javaでブラウザ操作するために必要なもの
ブラウザ操作するのに以下のドライバーをインストールする必要があります。
※本記事ではGoogleChromeを使用してブラウザ操作を行います。
- WebDriver(Selenium)
- ChromeDriver
WebDriverをダウンロードする
下記のサイトからインストールします。
サイトを開いて、下にスクロールするとJavaと記載されている箇所の
「4.1.3(March 28,2022)」をクリックする。
ChromeDriverをダウンロードする
ChromeDriverをインストールする前に、使用しているChromeのバージョンを確認する必要があります。
Chromeのバージョンを確認する方法
GoogleChromeを開きます。
右上のGoogleChromeの設定をクリックします。
設定をクリックします。
「Chromeについて」をクリックすると、Chromeの最新バージョンを確認することができます。
ChromeDriverは以下のサイトからインストールします。
EclipseにWebDriverとChromeDriverを導入する方法
先ほどをダウンロードしたWebDriverとChromeDriverを導入する必要があります。
WebDriverはビルドパスを通す必要がありますので、その方法を解説します。
クラスパスを選択し、「外部JARの追加」を押下します。
ダウンロードしたWebDriver内の全てのJARファイルを選択してクラスパスに配置します。
ChromeDriverを導入する手順について解説します。
①フォルダを作成する。
② ①で作成したフォルダにChromeDriverを配置する。
Eclipseにドライバの導入が済んだら、準備は完了です。
それでは、実際に動くかテストしてみましょう。
yahooを開くテストコードは以下となります。
コピーして貼り付けるだけで実行できますので、yahooサイトが開くか確認してみて下さい。
- import org.openqa.selenium.*;
- import org.openqa.selenium.chrome.ChromeDriver;
- public class Test {
- public static void main(String[] args) {
- // chromedriverを設定する
- System.setProperty("webdriver.chrome.driver", "chromedriver/chromedriver.exe");
- // Webdriverのインスタンスを作成
- WebDriver driver = new ChromeDriver();
- //WebDriver driver = new EdgeDriver();
- // 開くサイトのURLを設定する
- driver.get("https://www.yahoo.co.jp/");
- }
- }
yahooのサイトが開ければOKです。
補足:プログラムでWebブラウザを開くと、「自動テストソフトウェアによって制御されています。」と記載がされます。
サンプルコードについて簡単に説明します。
setProperty関数の第一引数には、使用するドライバを指定して
第二引数には、Eclipseに設定しているパスを指定します。
System.setProperty("webdriver.chrome.driver", "chromedriver/chromedriver.exe");
ChromeDriverのインスタンスを作成しています。
WebDriver driver = new ChromeDriver();
インスタンスを作成するためには以下のインポートを通す必要があります。
import org.openqa.selenium.chrome.ChromeDriver;
get関数の引数にアクセスしたいURLを記述すれば、サイトを開くことができます。
driver.get("https://www.yahoo.co.jp/");
ブラウザ操作の操作方法
「yahooの検索テキストに文字を入れて、検索ボタンが押下されてブラウザを閉じる」
という一連の動作を自動化することができるようになります。
それでは、以下の順番で説明していきます。
- 入力フォームに文字を入れる
- サイト内にボタンやリンクにアクセスする
- ブラウザを閉じる
1.入力フォームに文字を入れる
yahooの検索テキストに文字を入れる方法を解説します。
要素を取得するのにxpathを使います。
F12キーを押下して、開発ツールを起動させます。
開発ツールの一番左をクリックする。
文字を入れたい箇所を選択して、ハイライトされている箇所を右クリックします。
By.xpath関数の引数にコピーしたxpathを貼り付けます。
sendkeys関数の引数に入力したい文字を入力します。
driver.findElement(By.xpath("/html/body/div/div/header/section[1]/div/form/fieldset/span/input")).sendKeys("入力したい文字");
2.サイト内にボタンやリンクにアクセスする
1と同じくボタンやリンクを選択してxpathを取得してください。
最後にclick関数を配置します。
driver.findElement(By.xpath("/html/body/div/div/header/section[1]/div/form/fieldset/span/button/span/span")).click();
3.ブラウザを閉じる
quit関数を使用すれば全てのブラウザを閉じることができます。
driver.quit();
close関数を使用すれば表示されているウィンドウを閉じることができます。
driver.close();
以下が動作説明したソースコードになります。
- import org.openqa.selenium.*;
- import org.openqa.selenium.chrome.ChromeDriver;
- public class Test {
- public static void main(String[] args) {
- // chromedriverを設定する
- System.setProperty("webdriver.chrome.driver", "chromedriver/chromedriver.exe");
- // Webdriverのインスタンスを作成
- WebDriver driver = new ChromeDriver();
- // 開くサイトのURLを設定する
- driver.get("https://www.yahoo.co.jp/");
- // 入力フォームの要素を取得
- driver.findElement(By.xpath("/html/body/div/div/header/section[1]/div/form/fieldset/span/input")).sendKeys("入力したい文字");
- // 検索ボタンの要素を取得する
- driver.findElement(By.xpath("/html/body/div/div/header/section[1]/div/form/fieldset/span/button/span/span")).click();
- try {
- // 5秒待つ
- Thread.sleep(5000);
- }catch(InterruptedException e) {
- e.printStackTrace();
- }
- // 全てのウィンドウを閉じる
- driver.quit();
- }
- }
まとめ
javaでSeleniumを使って、ブラウザ操作の説明をいたしました。
Seleniumを使用すれば、繰り返し行っている作業を
自動化することができます。
また、今回説明いたしましたXpathからデータを取得する方法は、
他の言語でSeleniumを使用する際も使える方法ですので、
覚えておいて損はないです。
もし、興味があれば実装してみてください。
コメント