Seleniumをつかうと、結合テストを自動化した上にスクショまで取ってくれるということで、早速sts4で使ってみることにしました。
sts4でSeleniumを使ってみる
1. Seleniumとは?
Seleniumは、Webアプリケーションの自動テストやスクレイピングなどに使用されるオープンソースのツールセットです。
Webブラウザを自動操作して、Webアプリケーションのテストを行うことができます。
Seleniumには、主に以下の3つのコンポーネントが含まれています。
1.Selenium IDE
ブラウザ上で動作するツールで、GUIでテストスクリプトを作成できます。
2.Selenium WebDriver
ブラウザの自動操作を行うAPIです。多くのプログラミング言語で使用できます。
3.Selenium Grid
複数のマシンでテストを並列に実行するためのツールです。
Seleniumは、多くのプログラミング言語で使用できるため、開発者が好きな言語でテストコードを書くことができます。
また、WebアプリケーションのUIテストだけでなく、スクレイピングや自動化作業にも使用することができます。
Seleniumは、Webアプリケーションのテスト自動化において広く使用されており、多くの企業や開発者から支持されています。
今回は、Selenium WebDriverを導入します。
2. Selenium WebDriver
Selenium WebDriverはプログラミング言語(今回はjava)で自動化スクリプトを作成するためのAPIです。
2-1. Selenium WebDriverを使用する手順
1.開発に使用するプログラミング言語に応じたWebDriverのライブラリを導入する。
pom.xmlに依存関係を追加してWebDriverをダウンロードします。
<dependency>
<groupId>io.github.bonigarcia</groupId>
<artifactId>webdrivermanager</artifactId>
<version>4.4.3</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-api</artifactId>
<version>3.141.59</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.141.59</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-chrome-driver</artifactId>
<version>3.141.59</version>
</dependency>
2.WebDriverを初期化し、対象ブラウザ(今回
2-2. WebDriverの代表的なメソッド
WebDriverには多くのメソッドがありますが、以下に代表的なものをいくつか示します。
・get(String url)
指定したURLに移動する
driver.get("https://www.example.com/");
・getTitle()
現在のページのタイトルを取得するString pageTitle = driver.getTitle();
・findElement(By selector)
指定した要素を探し、最初に見つかった要素を返すWebElement element = driver.findElement(By.id("example_id"));
・sendKeys(CharSequence... keysToSend)
テキストボックスなどの要素にキーを入力するWebElement element = driver.findElement(By.id("example_id"));
element.sendKeys("example text");
・click()
要素をクリックするWebElement element = driver.findElement(By.id("example_id"));
element.click();
・getText()
要素のテキストを取得するWebElement element = driver.findElement(By.id("example_id"));
String text = element.getText();
・isDisplayed()
要素が表示されているかどうかを判断するWebElement element = driver.findElement(By.id("example_id"));
boolean isDisplayed = element.isDisplayed();
・submit()
フォームを送信するWebElement element = driver.findElement(By.id("form"));
element.submit();
・getScreenshotAs(OutputType<T> outputType)
スクリーンショットを取得するTakesScreenshot screenshotDriver = (TakesScreenshot)driver;
File screenshotFile = screenshotDriver.getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(screenshotFile, new File("screenshot.png"))
3. まとめ
今回は、googleのログイン問題やselenium3とselenium4の非互換性問題などで、うまく動かないかもしれません。
また後日リベンジしたいと思います。