Java, Selenium2 (&Eclipse, Maven)でブラウザを自動操作する
Seleniumっていうと、ブラウザの操作を自動化できるやつでしょ。ということで、かなり昔からありますが、いろいろと変化しているので、ちょっと整理します。スクレイピングに使うとかFacebookにログインしていいね押すとかいろいろできます。
現在のプロダクトは以下の4つ。なかでも重要なのはSelenium WebDriverとSelenium IDEの2つ。
Selenium WebDriver
ブラウザをエミュレートするためのドライバAPI。
WebDriverの仕組みが登場してSeleniumは飛躍的に進化しました。
Selenium 1.0 + WebDriver = Selenium 2.0
ドライバの一例
ChromeDriver, EventFiringWebDriver, FirefoxDriver, HtmlUnitDriver, InternetExplorerDriver, PhantomJSDriver, RemoteWebDriver, SafariDriver
オブジェクト指向に則り抽象化されているため、同じコードで複数のブラウザに対して同じ操作を実現することができます。
Selenium Grid
Seleniumの実行を複数サーバで並列化することができる仕組み。
Selenium IDE
FireFoxのアドオンとして提供されているIDE.テストの記録や再実行をサポート。
Selenium Remote Control
クライアント・サーバ型の、テスト実行をおこなうためのフレームワーク。
ここの図がわかりやすい。
では、WebDriverを利用してブラウザを操作してみます。
やってみる
Eclipseでプロジェクトを作ります。
別にやらなくてもいいんだけど、構成管理しないとかありえないでしょということで、Mavenで管理するプロジェクトにする
pom.xmlの作成。
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>
ライブラリが自動的に入ります。
コードかきます。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(); } }
実行
できました。よかったね。