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

MavenJAVAプロジェクトの操作を行う

#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

bash:Xvfb環境変数設定ファイル作成

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のインストール

bash:Chromeリポジトリファイル作成

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でもヘッドレスモードに対応したとのことなので、こちらも検証をしてみたい。