ハマログ

株式会社イーツー・インフォの社員ブログ

Java, Selenium2 (&Eclipse, Maven)でブラウザを自動操作する

Seleniumっていうと、ブラウザの操作を自動化できるやつでしょ。ということで、かなり昔からありますが、いろいろと変化しているので、ちょっと整理します。スクレイピングに使うとかFacebookにログインしていいね押すとかいろいろできます。

現在のプロダクトは以下の4つ。なかでも重要なのはSelenium WebDriverとSelenium IDEの2つ。

Selenium WebDriver

selenium-logo

ブラウザをエミュレートするためのドライバAPI。

WebDriverの仕組みが登場してSeleniumは飛躍的に進化しました。
Selenium 1.0 + WebDriver = Selenium 2.0

ドライバの一例
ChromeDriver, EventFiringWebDriver, FirefoxDriver, HtmlUnitDriver, InternetExplorerDriver, PhantomJSDriver, RemoteWebDriver, SafariDriver

オブジェクト指向に則り抽象化されているため、同じコードで複数のブラウザに対して同じ操作を実現することができます。

Selenium Grid

selenium-grid-logo

Seleniumの実行を複数サーバで並列化することができる仕組み。

Selenium IDE

selenium-ide-logo
FireFoxのアドオンとして提供されているIDE.テストの記録や再実行をサポート。

Selenium Remote Control

selenium-rc-logo
クライアント・サーバ型の、テスト実行をおこなうためのフレームワーク。
ここの図がわかりやすい。

では、WebDriverを利用してブラウザを操作してみます。

やってみる

Eclipseでプロジェクトを作ります。

01.makejavaproject

別にやらなくてもいいんだけど、構成管理しないとかありえないでしょということで、Mavenで管理するプロジェクトにする

02.convertmavenproject

pom.xmlの作成。

03.makepomxml

pom.xmlに関連記述

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>Selenium</groupId>
	<artifactId>Selenium</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>app-client</packaging>
	<build>
		<sourceDirectory>appClientModule</sourceDirectory>
		<resources>
			<resource>
				<directory>appClientModule</directory>
				<excludes>
					<exclude>**/*.java</exclude>
				</excludes>
			</resource>
		</resources>
		<plugins>
			<plugin>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.1</version>
				<configuration>
					<source>1.7</source>
					<target>1.7</target>
				</configuration>
			</plugin>
			<plugin>
				<artifactId>maven-acr-plugin</artifactId>
				<version>1.0</version>
				<extensions>true</extensions>
				<configuration>
					<archive>
						<manifestEntries>
							<Main-Class>Main</Main-Class>
						</manifestEntries>
					</archive>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
				<version>2.16</version>
			</plugin>
		</plugins>
	</build>
	<dependencies>
		<dependency>
			<groupId>org.seleniumhq.selenium</groupId>
			<artifactId>selenium-java</artifactId>
			<version>2.53.1</version>
		</dependency>
		<dependency>
			<groupId>org.seleniumhq.selenium</groupId>
			<artifactId>selenium-chrome-driver</artifactId>
			<version>2.53.1</version>
		</dependency>
		<dependency>
			<groupId>org.seleniumhq.selenium</groupId>
			<artifactId>selenium-ie-driver</artifactId>
			<version>2.53.1</version>
		</dependency>
		<dependency>
			<groupId>org.seleniumhq.selenium</groupId>
			<artifactId>selenium-firefox-driver</artifactId>
			<version>2.53.1</version>
		</dependency>
		<dependency>
			<groupId>org.seleniumhq.selenium</groupId>
			<artifactId>selenium-edge-driver</artifactId>
			<version>2.53.1</version>
		</dependency>
	</dependencies>
</project>

ライブラリが自動的に入ります。

04.mavenupdate

コードかきます。OpenE2infoCorporate.java

package selenium;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class OpenE2infoCorporate {

	public static void main(String[] args) {
		System.setProperty("webdriver.chrome.driver", "C:\\Users\\kaneko\\workspace\\Selenium\\ThirdPartyDriver\\chromedriver.exe");
		System.setProperty("webdriver.ie.driver", "C:\\Program Files (x86)\\Microsoft Web Driver\\MicrosoftWebDriver.exe");
		System.setProperty("webdriver.edge.driver", "C:\\Program Files (x86)\\Microsoft Web Driver\\MicrosoftWebDriver.exe");

		// WebDriver driver = new FirefoxDriver();
		WebDriver driver = new ChromeDriver();
		// WebDriver driver = new InternetExplorerDriver();
		// WebDriver driver = new EdgeDriver();

		// トップページ
		driver.get("http://www.e2info.co.jp/");

		// 閉じる
		driver.quit();
	}
}

実行

05.run

できました。よかったね。

EclipseJavaMavenMaven2SeleniumTestUnit TestUT

  kaneko tomo   2016年7月9日


関連記事

Route 53 ゾーンファイルをインポート

AWS Route 53 のゾーンファイルをインポートする機能でエラーが発生した…

PHP勉強

今回のブログは私事です。 感想・反省 今更ですが、 私、 PHP勉強する為にフレ…

テスト自動化の素朴な疑問を調べてみた

こんにちは。 koma です。 私の所属するQAチームでは、積極的にテスト自動化…


← 前の投稿

次の投稿 →