Top > MyPage
 

Seleniumのお試し

環境設定

Java

Javaの環境として、iアプリやその他の保守をする上で、まだ1.4系を外すことは出来ないのですが、Seleniumは5系統でしか動かないらしい。なので、とりあえず5系もインストールして、環境変数を入れ替えることで、どちらも使えるようにする。

SET Path C:\jdk1.5.0_10\bin;....
set JAVA_HOME=C:\jdk1.5.0_10

maven

とりあえずmavenは必要ないのでしょうが、だいぶ使わないうちに使い方を忘れてきてしまったことと、既にバージョンが2になってしまって『浦島太郎』になっているので、ついでに再勉強がてら、maven2をインストールした(展開しただけ)。それに併せて、環境変数も修正した。

SET Path ..;C:\maven-2.0.5\bin;....
set MAVEN_HOME=C:\maven-2.0.5

また、eclipseにプラグインをインストール。

http://m2eclipse.codehaus.org/

をSoftware updatesで指定すると、すぐにインストールされる(説明はこのプラグインを利用しない方法で説明します)。

mavenでプロジェクトを作成

環境変数を活かすために、一度コンピュータをリブート。次にコマンドラインから(僕の場合はbashのコンソールから)

cd c:\projects
bash
bash-3.2$ mvn archetype:create -DgroupId=Und -DartifactId=testKML \
    -Dversion=0.0.1

で作成できます。これで

projects
└ testKML
   ├ src
   │ ├ main
   │ │ └ java
   │ │    └ Und
   │ │       └ App.java
   │ └ test
   │    └ java
   │       └ Und
   │          └ AppTest.java
   └ pom.xml

というひな形が出来ます。色々ダウンロードをしていますが、これはローカルな環境にセンターリポジトリーから必要なライブラリーをダウンロードしていて、自動で行われます。とりあえず無視しましょう。

App.javaは使わないので、とりあえずそのままにしておきます(なんせJavaの開発に使うのではなく、Junitでテストしたいだけなので)。

mavenのpom.xmlの修正

SeleniumRCのライブラリーがどうやら、mavenのセンターリポジトリーにないようだし、その辺を考慮して、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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>Und</groupId>
  <artifactId>testKML</artifactId>
  <packaging>jar</packaging>
  <version>0.0.1</version>
  <name>testKML</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

を、

<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>Und</groupId>
  <artifactId>testKML</artifactId>
  <packaging>jar</packaging>
  <version>0.0.1</version>
  <name>testKML</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.openqa.selenium.client-drivers</groupId>
      <artifactId>selenium-java-client-driver</artifactId>
      <version>0.9.0</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.openqa.selenium.server</groupId>
      <artifactId>selenium-server</artifactId>
      <version>0.9.0</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <finalName>selenium-test</finalName>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.5</source>
          <target>1.5</target>
          <encoding>EUC_JP</encoding>
        </configuration>
      </plugin>
    </plugins>
  </build>

  <repositories>
    <repository>
      <id>openqa</id>
      <url>http://maven.openqa.org</url>
    </repository>
   </repositories>
</project>

と書き換えます。途中のbuildというところは、単に1.4系のJavaじゃなく1.5系のJavaでコンパイルし、テストしたい対象がEUCのページなので、文字コードをEUCに指定しています(Windowsの場合デフォルトでShift_JISになっている)。そこで、やはりコマンドラインから

cd testUnd
mvn test

を打ち込むと、

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running Und.AppTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.032 sec

Results :
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0

[INFO] \
    ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] \
    ------------------------------------------------------------------------
[INFO] Total time: 2 seconds
[INFO] Finished at: Tue Feb 20 12:01:27 JST 2007
[INFO] Final Memory: 4M/7M
[INFO] \
    ------------------------------------------------------------------------

と、テストが通ったことが出力されます。もちろん、なにもUnd.AppTest.javaはいじっていませんが、

package Und;

import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;

/**
 * Unit test for simple App.
 */
public class AppTest 
    extends TestCase
{
    /**
     * Create the test case
     *
     * @param testName name of the test case
     */
    public AppTest( String testName )
    {
        super( testName );
    }

    /**
     * @return the suite of tests being tested
     */
    public static Test suite()
    {
        return new TestSuite( AppTest.class );
    }

    /**
     * Rigourous Test :-)
     */
    public void testApp()
    {
        assertTrue( true );
    }
}

のように、100%通るものしかデフォルトでは書き込まれていません。これを変更してみましょう。

testプログラムを修正

コードをEUCであることを確かめながら、

package Und;
import junit.framework.TestCase;
import org.openqa.selenium.server.SeleniumServer;
import com.thoughtworks.selenium.DefaultSelenium;
import com.thoughtworks.selenium.Selenium;

public class AppTest extends TestCase
{
        private SeleniumServer seleniumServer;
        private Selenium selenium;

        public void setUp() throws Exception {
                startSeleniumServer();
                startSelenium();
                System.out.println("starting...");
        }

        public void tearDown() throws Exception {
                stopSelenium();
                stopSeleniumServer();
                System.out.println("ending...");
        }

        private void stopSeleniumServer() {
                seleniumServer.stop();
        }
        private void stopSelenium() {
                selenium.stop();
        }

        private void startSeleniumServer() throws Exception {
                seleniumServer = new SeleniumServer();
                seleniumServer.start();
        }

        private void startSelenium() {
                String url = "http://apli.chikkun.com";
selenium = new DefaultSelenium("localhost", SeleniumServer.DEFAULT_PORT, \
    "*iexplore", url);
                selenium.start();
        }
        public void testLogin() throws Exception {
                selenium.open("/KML/");
                selenium.type("username", "chikkun");
                selenium.type("password", "kazukun");
                selenium.click("//input[@value='ログイン']");
                selenium.waitForPageToLoad("60000"); // (2)
                assertEquals("ケータイ クイカ受付管理 - 申込管理", selenium.getTitle());

        }
}

と記述し、コマンドラインから、同様に

mvn test

で(basic認証をかけているので、それは自分で入力した後に)

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 20.688 sec

Results :
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0

[INFO] \
    ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] \
    ------------------------------------------------------------------------
[INFO] Total time: 22 seconds
[INFO] Finished at: Mon Feb 19 20:32:02 JST 2007
[INFO] Final Memory: 3M/7M
[INFO] \
    ------------------------------------------------------------------------

と成功した旨が報告される。やったあ!

[2007-02-19 11:22]