Selenideを検証してみた!!
Selenide
Selenideとは
SelenideはSelenum WebDriverをラップしたブラウザテストの自動化フレームワークのこと。
エストニアにあるCodeborne社のAndrei Solntsev氏を中心に開発が行われているWebDriverのJavaラッパーの一つで、同じJavaで実装されたFluentLeniumやGroovyでのGebに相当するものです。
SeleniumはUIテストのためのツールではなく、ブラウザ操作のためのツールである。 それとは別でSelenideは初めからUIテストのために設計されたものである。
開発環境
OS:CentOS Linux release 7.4.1708 (Core)
JAVA(Junit):"1.8.0_151"
chromedrive:2.3
Crome:62.0.3202.89
ビルド製品であるMavenのインストール
Mavenとは?
「Maven」とは、Javaプログラムをビルドするためのツールです。 C言語を触ったことがある人は、makeのようなものと言えばイメージがしやすいかと思います。 似たようなツールに、AntやGradleなどありますが、使い方とかが違うだけで、本質的には同じです。 コンパイルの前後に依存するライブラリを自動で揃えたり、XMLさえ書けば、いろんなことがビルドと一緒にできるツールです。
Mavenは何が便利?
使いたいライブラリを個別に集めなくてもいい。 使いたいライブラリに関連する別のライブラリも集めなくていいい。 他の開発者にわざわざライブラリを渡さなくてもいい。 ライブラリのバージョンが上がっても、バージョン番号をいじるだけ。 ライブラリの元のソースコードもMavenがダウンロードしてくれる。 Jenkinsを使っていたら、jenkinsはMavenとの連携は簡単。 ダウンロードされたライブラリはローカルディスクのライブラ置き場で保管され、必要に応じて使われる。 Eclipseのビルドパスに勝手に追加してくれる。共同開発者も含めてビルドパス管理不要になる。 複数のプロジェクトのライブラリの種類やバージョンを1箇所で管理できたりもする。
(参考)
2. Maven 入門
[インストール方法](http://wiki.fdiary.net/maven2/?CookBook=#l7)
CentOS 7にMavenをインストールする
(参照URL) Mavenをインストールする 方法
まず、MavenにはJDKが必要になるので、以下のコマンドでOracle JDKをインストールする。
#yum install -y wget #wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" #http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm #rpm -ihv jdk-8u131-linux-x64.rpm
次に、以下のコマンドでMavenのインストールを行う。
#cd /opt #sudo wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo #sudo sed -i s/\$releasever/6/g /etc/yum.repos.d/epel-apache-maven.repo #sudo yum install -y apache-maven #mvn --version
実際にMavenを利用するユーザでPATHを通しておく
vi ~/.bash_profile
MavenでJAVAプロジェクトの操作を行う
#mvn archetype:generate -DgroupId=org.selenide.examples -DartifactId=google-test #cd google-test/
mvnコマンドから Java を実行できる便利なexec-maven-pluginをプラグインします。
初回は関係するライブラリのインストールなどもあり、少し時間がかかります。
mvn packeage
targetフォルダ配下に jarファイルやクラスファイルも確認できますね。
pom.xmlファイルの編集が必要
pom.xmlとは? mavenのプロジェクト定義ファイル。 mvnコマンドから Java を実行できる便利なプラグインexec-maven-pluginします。
<modelVersion>4.0.0</modelVersion> <groupId>org.selenide.example</groupId> <artifactId>google-test</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <name>google-test</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <font color="Red">**変更**</font>4.11 <scope>test</scope> </dependency> </dependencies> </project>
プロジェクト実行
mvn archetype:generate -DgroupId=org.selenide.examples -DartifactId=google-test
実行すると、いろいろファイルが作られる 単体テストで利用するのは、 AppTest.javaである。
$tree . . └── my-app ├── pom.xml └── src ├── main │ └── java │ └── com │ └── mycompany │ └── app │ └── App.java └── test └── java └── com └── mycompany └── app └── AppTest.java
実行
ここではエラーがでなくればとりあえず問題なし。
mvn test
ユニットテスト(単体テスト)との準備
デフォルトでは、以下のパターンにマッチするファイルがテストとして実行されます。
/Test*.java
/Test.java
**/TestCase.java
また、以下のファイルはデフォルトで除外されます:
/Abstract*Test.java
/AbstractTestCase.java
**/$*
先ほど作成したプロジェクトには、常に成功するユニットテスト(src/test/com/example/AppTest.java) が含まれているので、 それが実行されます。
JUnitが推奨される理由
一度作成すればすばやくテスト可能である。
その後はテストコードを標本とすることでバグ訂正が容易となる。
テストコードを見れば仕様が一目瞭然となる。
誰でも同じテストを行えるようになる。
独自のテストコードによるテスト作成の手間を省ける。
仮想ディスプレイのインストール
Xvfb インストール bash:Xvfbインストール
yum install xorg-x11-server-Xvfb
bash:Xvfbサービス作成
vim /usr/lib/systemd/system/Xvfb.service
bash:/usr/lib/systemd/system/Xvfb.service
[Unit] Description=Virtual Framebuffer X server for X Version 11 [Service] Type=simple EnvironmentFile=-/etc/sysconfig/Xvfb ExecStart=/usr/bin/Xvfb $OPTION ExecReload=/bin/kill -HUP ${MAINPID} [Install] WantedBy=multi-user.target
vim /etc/sysconfig/Xvfb
`bash:/etc/sysconfig/Xvfb
# Xvfb Enviroment File OPTION=":1 -screen 0 1366x768x24"
bash:Xvfbサービス起動
systemctl enable Xvfb systemctl start Xvfb
Cromeのインストール
vim /etc/yum.repos.d/yum.repos.d
bash:/etc/yum.repos.d/yum.repos.d
[google-chrome] name=google-chrome baseurl=http://dl.google.com/linux/chrome/rpm/stable/$basearch enabled=1 gpgcheck=1 gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub
bash:google-chrome-stableインストール
yum install google-chrome-stable
日本語表示のために bash:日本語フォントインストール
yum install ipa-pgothic-fonts.noarch
ChromeDriver - WebDriver for Chrome : Downloads から適切なドライバーをダウンロード。今回はバージョン2.29。 bash:ChromeDriverインストール
wget http://chromedriver.storage.googleapis.com/2.29/chromedriver_linux64.zip unzip chromedriver_linux64.zip mv chromedriver /usr/local/bin rm chromedriver_linux64.zip
AppTest.javaに単体テストのスクリプトを設置
package org.selenide.example; import static com.codeborne.selenide.Condition.*; import static com.codeborne.selenide.Selenide.*; import static com.codeborne.selenide.CollectionCondition.size; import static com.codeborne.selenide.Condition.text; import static com.codeborne.selenide.Selenide.open; import org.junit.Test; import org.junit.BeforeClass; import org.openqa.selenium.By; import com.codeborne.selenide.Configuration; import com.codeborne.selenide.WebDriverRunner; /** * Unit test for simple App. */ public class AppTest { @BeforeClass public static void ClassTest() { Configuration.browser = WebDriverRunner.CHROME; System.setProperty("webdriver.chrome.driver", "/usr/local/bin//chromedriver"); } @Test public void selenideTest() throws Exception { open("http://www.google.co.jp/"); } }
実行
mvn Test 動きました。 ## まとめ ・GoogleCromeではヘッドレスモードが動作することができるが、Selenaideでは動作ができなかったことが 課題である。 ・FireFoxでもヘッドレスモードに対応したとのことなので、こちらも検証をしてみたい。