Robot Framework+Selenium2WebDriver環境を構築

7にRobot FrameworkとSelenium2WebDriverをインストールしてみます

Robot Frameworkは、オープンソースで開発されたテスト自動化フレームワークです。受け入れ検証などで使用することで検証工数を削減することができます。Pythonで書かれていてソースはGithubで公開されていますので力のある方はそちらを。
https://github.com/robotframework/robotframework

Robot Frameworkは、テキストで記述したテストケースを実行します。テストケースにはキーワードを記述していきます。キーワードは、標準で用意されているライブラリーと公開されている外部のライブラリーがあり、オリジナルのキーワードを作成することもできます。Pyhonで記述したキーワードを取り込み実行することもできます。
今回インストールするSelenium2WebDriverとSelenium2用のライブラリーを使用してWebアプリケーション検証を自動化することができます。

動作環境

Pythonで開発されていますので、Pythonが必要になります。Python2とPython3の両方をサポートしていますので、いずれかのバージョンをインストールします。

Robot Framework is operating system and application independent. The core framework is implemented using Python, supports both Python 2 and Python 3, and runs also on Jython (JVM), IronPython (.NET) and PyPy. The framework has a rich ecosystem around it consisting of various generic test libraries and tools that are developed as separate projects.

有志の方により、ドキュメントも日本語化されたものがあります。
Robot Framework 和訳・日本語ドキュメント集 — RobotFramework和訳・日本語ドキュメント集
http://robotframework-ja.readthedocs.io/ja/latest/index.html

Robot Frameworkのインストール

Robot Frameworkをインストールするため、Pythonとpipをインストールします。
CentOS7を標準(Desktop)でインストールするとPython2.7がインストールされています。Python自体はインストールされているので、他に必要そうなパッケージをインストールします。Robot Frameworkでpipインストールが推奨されているので、pipがあればいい気もしますが、develもインストールしておきます。

Python2.7の場合

# yum install python-devel python-pip

コマンド実行例

# yum install python-devel python-pip
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.iij.ad.jp
 * epel: epel.scopesky.iq
 * extras: ftp.iij.ad.jp
 * updates: centos.usonyx.net
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ python-devel.x86_64 0:2.7.5-58.el7 を 
---> パッケージ python2-pip.noarch 0:8.1.2-5.el7 を 
--> 依存性の処理をしています: python-setuptools のパッケージ: python2-pip-8.1.2-5.el7.noarch
--> トランザクションの確認を実行しています。
---> パッケージ python-setuptools.noarch 0:0.9.8-7.el7 を 
--> 依存性の処理をしています: python-backports-ssl_match_hostname のパッケージ: python-setuptools-0.9.8-7.el7.noarch
--> トランザクションの確認を実行しています。
---> パッケージ python-backports-ssl_match_hostname.noarch 0:3.4.0.2-4.el7 を 
--> 依存性の処理をしています: python-backports のパッケージ: python-backports-ssl_match_hostname-3.4.0.2-4.el7.noarch
--> トランザクションの確認を実行しています。
---> パッケージ python-backports.x86_64 0:1.0-8.el7 を 
--> 依存性解決を終了しました。

依存性を解決しました
====================================================================================================
 Package                                    アーキテクチャー
                                                          バージョン              リポジトリー
                                                                                               容量
====================================================================================================
インストール中:
 python-devel                               x86_64        2.7.5-58.el7            base        395 k
 python2-pip                                noarch        8.1.2-5.el7             epel        1.7 M
依存性関連でのインストールをします:
 python-backports                           x86_64        1.0-8.el7               base        5.8 k
 python-backports-ssl_match_hostname        noarch        3.4.0.2-4.el7           base         12 k
 python-setuptools                          noarch        0.9.8-7.el7             base        397 k

トランザクションの要約
==============================================================================================
======
  2 パッケージ (+3 個の依存関係のパッケージ)

総ダウンロード容量: 2.5 M
インストール容量: 10 M
Is this ok [y/d/N]: y
Downloading packages:
(1/5): python-backports-1.0-8.el7.x86_64.rpm                                 | 5.8 kB  00:00:02
(2/5): python-backports-ssl_match_hostname-3.4.0.2-4.el7.noarch.rpm          |  12 kB  00:00:02
(3/5): python-devel-2.7.5-58.el7.x86_64.rpm                                  | 395 kB  00:00:00
(4/5): python-setuptools-0.9.8-7.el7.noarch.rpm                              | 397 kB  00:00:00
(5/5): python2-pip-8.1.2-5.el7.noarch.rpm                                    | 1.7 MB  00:00:00
----------------------------------------------------------------------------------------------------
合計                                                                917 kB/s | 2.5 MB  00:00:02
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : python-backports-1.0-8.el7.x86_64                                   1/5
  インストール中          : python-backports-ssl_match_hostname-3.4.0.2-4.el7.noarch            2/5
  インストール中          : python-setuptools-0.9.8-7.el7.noarch                                3/5
  インストール中          : python2-pip-8.1.2-5.el7.noarch                                      4/5
  インストール中          : python-devel-2.7.5-58.el7.x86_64                                    5/5
  検証中                  : python-devel-2.7.5-58.el7.x86_64                                    1/5
  検証中                  : python-setuptools-0.9.8-7.el7.noarch                                2/5
  検証中                  : python-backports-1.0-8.el7.x86_64                                   3/5
  検証中                  : python2-pip-8.1.2-5.el7.noarch                                      4/5
  検証中                  : python-backports-ssl_match_hostname-3.4.0.2-4.el7.noarch            5/5

:
  python-devel.x86_64 0:2.7.5-58.el7                python2-pip.noarch 0:8.1.2-5.el7

依存性関連をインストールしました:
  python-backports.x86_64 0:1.0-8.el7    python-backports-ssl_match_hostname.noarch 0:3.4.0.2-4.el7
  python-setuptools.noarch 0:0.9.8-7.el7

完了しました!

python-pipをインストールするためにはepelリポジトリが必要

python-pipをインストールするためにはepelリポジトリが必要です。リポジトリを追加していない場合はepelリポジトリを追加します。

# yum install epel-release
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: ftp.iij.ad.jp
 * extras: centos.usonyx.net
 * updates: centos.usonyx.net
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ epel-release.noarch 0:7-9 を インストール
--> 依存性解決を終了しました。

依存性を解決しました
====================================================================================================
 Package                     アーキテクチャー      バージョン           リポジトリー           容量
====================================================================================================
インストール中:
 epel-release                noarch                7-9                  extras                 14 k

トランザクションの要約
====================================================================================================
インストール  1 パッケージ

総ダウンロード容量: 14 k
インストール容量: 24 k
Is this ok [y/d/N]: y
Downloading packages:
epel-release-7-9.noarch.rpm                                                  |  14 kB  00:00:17
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : epel-release-7-9.noarch                                             1/1
  検証中                  : epel-release-7-9.noarch                                             1/1

インストール:
  epel-release.noarch 0:7-9

Python3をyumコマンドでインストールするためリポジトリをインストールします

# yum install https://centos7.iuscommunity.org/ius-release.rpm

コマンド実行例

# yum install https://centos7.iuscommunity.org/ius-release.rpm
読み込んだプラグイン:fastestmirror
ius-release.rpm                                                              | 8.1 kB  00:00:00
/var/tmp/yum-root-mwWO2D/ius-release.rpm を調べています: ius-release-1.0-15.ius.centos7.noarch
/var/tmp/yum-root-mwWO2D/ius-release.rpm をインストール済みとして設定しています
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ ius-release.noarch 0:1.0-15.ius.centos7 を インストール
--> 依存性の処理をしています: epel-release = 7 のパッケージ: ius-release-1.0-15.ius.centos7.noarch
base                                                                         | 3.6 kB  00:00:00
extras                                                                       | 3.4 kB  00:00:00
updates                                                                      | 3.4 kB  00:00:00
Loading mirror speeds from cached hostfile
 * base: ftp.iij.ad.jp
 * extras: centos.usonyx.net
 * updates: ftp.iij.ad.jp
--> トランザクションの確認を実行しています。
---> パッケージ epel-release.noarch 0:7-9 を インストール
--> 依存性解決を終了しました。

依存性を解決しました
====================================================================================================
 Package                アーキテクチャー バージョン                    リポジトリー            容量
====================================================================================================
インストール中:
 ius-release            noarch           1.0-15.ius.centos7            /ius-release           8.5 k
依存性関連でのインストールをします:
 epel-release           noarch           7-9                           extras                  14 k

トランザクションの要約
====================================================================================================
インストール  1 パッケージ (+1 個の依存関係のパッケージ)

合計容量: 23 k
総ダウンロード容量: 14 k
インストール容量: 33 k
Is this ok [y/d/N]: y
Downloading packages:
epel-release-7-9.noarch.rpm                                                  |  14 kB  00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : epel-release-7-9.noarch                                             1/2
  インストール中          : ius-release-1.0-15.ius.centos7.noarch                               2/2
  検証中                  : ius-release-1.0-15.ius.centos7.noarch                               1/2
  検証中                  : epel-release-7-9.noarch                                             2/2

インストール:
  ius-release.noarch 0:1.0-15.ius.centos7

依存性関連をインストールしました:
  epel-release.noarch 0:7-9

完了しました!

Python3.6の場合

Python3.xのインストールはバージョンを指定してインストールします。

# yum install python36u python36u-libs python36u-devel python36u-pip

コマンド実行例

# yum install python36u python36u-libs python36u-devel python36u-pip
読み込んだプラグイン:fastestmirror

****長いので略****

file:///etc/pki/rpm-gpg/IUS-COMMUNITY-GPG-KEY から鍵を取得中です。
Importing GPG key 0x9CD4953F:
 Userid     : "IUS Community Project "
 Fingerprint: 8b84 6e3a b3fe 6462 74e8 670f da22 1cdf 9cd4 953f
 Package    : ius-release-1.0-15.ius.centos7.noarch (installed)
 From       : /etc/pki/rpm-gpg/IUS-COMMUNITY-GPG-KEY
上記の処理を行います。よろしいでしょうか? [y/N]y
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : python36u-libs-3.6.4-1.ius.centos7.x86_64                           1/5
  インストール中          : python36u-3.6.4-1.ius.centos7.x86_64                                2/5
  インストール中          : python36u-setuptools-36.6.0-1.ius.centos7.noarch                    3/5
  インストール中          : python36u-pip-9.0.1-1.ius.centos7.noarch                            4/5
  インストール中          : python36u-devel-3.6.4-1.ius.centos7.x86_64                          5/5
  検証中                  : python36u-setuptools-36.6.0-1.ius.centos7.noarch                    1/5
  検証中                  : python36u-pip-9.0.1-1.ius.centos7.noarch                            2/5
  検証中                  : python36u-3.6.4-1.ius.centos7.x86_64                                3/5
  検証中                  : python36u-libs-3.6.4-1.ius.centos7.x86_64                           4/5
  検証中                  : python36u-devel-3.6.4-1.ius.centos7.x86_64                          5/5

インストール:
  python36u.x86_64 0:3.6.4-1.ius.centos7           python36u-devel.x86_64 0:3.6.4-1.ius.centos7
  python36u-libs.x86_64 0:3.6.4-1.ius.centos7      python36u-pip.noarch 0:9.0.1-1.ius.centos7

依存性関連をインストールしました:
  python36u-setuptools.noarch 0:36.6.0-1.ius.centos7

完了しました!

完了すると複数バージョンが存在している状態になります。

# python -V
Python 2.7.5
# python3.6 -V
Python 3.6.4

このままでは、Python3.6を実行する場合はPython3.6コマンドとして実行する必要になりますが、pythonコマンドでPython3.6が動くように設定します。

pythonのリンクを変更

ln -fs /usr/bin/python3.6 /usr/bin/python

コマンド実行例

# ls -l /usr/bin |grep python
lrwxrwxrwx. 1 root root         7  3月 14 09:32 python -> python2
lrwxrwxrwx. 1 root root         9  3月 14 09:32 python2 -> python2.7
-rwxr-xr-x. 1 root root      7136  8月  4  2017 python2.7
-rwxr-xr-x. 2 root root     11312 12月 20 05:50 python3.6
lrwxrwxrwx. 1 root root        26  3月 14 15:39 python3.6-config -> /usr/bin/python3.6m-config
-rwxr-xr-x. 2 root root     11312 12月 20 05:50 python3.6m
-rwxr-xr-x. 1 root root       173 12月 20 05:50 python3.6m-config
-rwxr-xr-x. 1 root root      3435 12月 20 05:48 python3.6m-x86_64-config
# ln -fs /usr/bin/python3.6 /usr/bin/python
# ls -l /usr/bin |grep python
lrwxrwxrwx. 1 root root        18  3月 14 15:43 python -> /usr/bin/python3.6
lrwxrwxrwx. 1 root root         9  3月 14 09:32 python2 -> python2.7
-rwxr-xr-x. 1 root root      7136  8月  4  2017 python2.7
-rwxr-xr-x. 2 root root     11312 12月 20 05:50 python3.6
lrwxrwxrwx. 1 root root        26  3月 14 15:39 python3.6-config -> /usr/bin/python3.6m-config
-rwxr-xr-x. 2 root root     11312 12月 20 05:50 python3.6m
-rwxr-xr-x. 1 root root       173 12月 20 05:50 python3.6m-config
-rwxr-xr-x. 1 root root      3435 12月 20 05:48 python3.6m-x86_64-config
# python -V
Python 3.6.4

Pythonを呼び出しているファイルを変更

/usr/bin/yumと/usr/libexec/urlgrabber-ext-downの1行目を変更します。

#! /usr/bin/python → #! /usr/bin/python2.7

のように変更します。

インストールパッケージをダウンロード

githubからRobot FrameworkとSelenium2Libraryのインストールパッケージをダウンロードします。この作業によりSelenium2と依存関係のあるRobot FrameworkとSelenium2WebDriverがインストールされます。

githubからダウンロード

# git clone https://github.com/rtomac/robotframework-2library.git

コマンド実行例

# git clone https://github.com/rtomac/robotframework-selenium2library.git
Cloning into 'robotframework-selenium2library'...
remote: Counting objects: 9586, done.
remote: Compressing objects: 100% (27/27), done.
remote: Total 9586 (delta 7), reused 9 (delta 0), pack-reused 9556
Receiving objects: 100% (9586/9586), 109.03 MiB | 9.94 MiB/s, done.
Resolving deltas: 100% (6097/6097), done.

# ls
anaconda-ks.cfg  robotframework-selenium2library

ここまでPython3.6についても記述しましたが、今回はPython2.7環境でインストールを実施します。

もしProxy環境であればgitにProxy設定を行ってから実行します

※サンプルはユーザ認証が必要ない場合です。

$git config --global http.proxy http://proxy.example.com:8080
$git config --global https.proxy http://proxy.example.com:8080

ダウンロードしたインストールパッケージを使用してインストール

ダウンロードしたインストールパッケージ(robotframework-selenium2library)を使用してインストールします。インストールはpytonコマンドで実行します。

# cd robotframework-selenium2library/
# python setup.py install

コマンド実行例

# cd robotframework-selenium2library/
[root@centos7-gnm-103 robotframework-selenium2library]# ls
BUILD.rst         COPYRIGHT.txt  README.rst  requirements-build.txt  selenium.bmp  tasks.py
CHANGES.rst       LICENSE.txt    atest       requirements-dev.txt    setup.py      utest
CONTRIBUTING.rst  MANIFEST.in    docs        requirements.txt        src
# python setup.py install
running install
running bdist_egg
running egg_info
writing requirements to src/robotframework_seleniumlibrary.egg-info/requires.txt
writing src/robotframework_seleniumlibrary.egg-info/PKG-INFO
writing top-level names to src/robotframework_seleniumlibrary.egg-info/top_level.txt
writing dependency_links to src/robotframework_seleniumlibrary.egg-info/dependency_links.txt
reading manifest file 'src/robotframework_seleniumlibrary.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
writing manifest file 'src/robotframework_seleniumlibrary.egg-info/SOURCES.txt'
installing library code to build/bdist.-x86_64/egg
running install_lib
running build_py
creating build/bdist.-x86_64/egg
creating build/bdist.-x86_64/egg/SeleniumLibrary
copying build/lib/SeleniumLibrary/__init__.py -> build/bdist.-x86_64/egg/SeleniumLibrary
copying build/lib/SeleniumLibrary/errors.py -> build/bdist.-x86_64/egg/SeleniumLibrary
creating build/bdist.-x86_64/egg/SeleniumLibrary/base
copying build/lib/SeleniumLibrary/base/__init__.py -> build/bdist.-x86_64/egg/SeleniumLibrary/base
copying build/lib/SeleniumLibrary/base/context.py -> build/bdist.-x86_64/egg/SeleniumLibrary/base
copying build/lib/SeleniumLibrary/base/librarycomponent.py -> build/bdist.-x86_64/egg/SeleniumLibrary/base
copying build/lib/SeleniumLibrary/base/robotlibcore.py -> build/bdist.-x86_64/egg/SeleniumLibrary/base
creating build/bdist.-x86_64/egg/SeleniumLibrary/keywords
copying build/lib/SeleniumLibrary/keywords/__init__.py -> build/bdist.-x86_64/egg/SeleniumLibrary/keywords
copying build/lib/SeleniumLibrary/keywords/alert.py -> build/bdist.-x86_64/egg/SeleniumLibrary/keywords
copying build/lib/SeleniumLibrary/keywords/browsermanagement.py -> build/bdist.-x86_64/egg/SeleniumLibrary/keywords
copying build/lib/SeleniumLibrary/keywords/cookie.py -> build/bdist.-x86_64/egg/SeleniumLibrary/keywords
copying build/lib/SeleniumLibrary/keywords/element.py -> build/bdist.-x86_64/egg/SeleniumLibrary/keywords
copying build/lib/SeleniumLibrary/keywords/formelement.py -> build/bdist.-x86_64/egg/SeleniumLibrary/keywords
copying build/lib/SeleniumLibrary/keywords/frames.py -> build/bdist.-x86_64/egg/SeleniumLibrary/keywords
copying build/lib/SeleniumLibrary/keywords/javascript.py -> build/bdist.-x86_64/egg/SeleniumLibrary/keywords
copying build/lib/SeleniumLibrary/keywords/runonfailure.py -> build/bdist.-x86_64/egg/SeleniumLibrary/keywords
copying build/lib/SeleniumLibrary/keywords/screenshot.py -> build/bdist.-x86_64/egg/SeleniumLibrary/keywords
copying build/lib/SeleniumLibrary/keywords/selectelement.py -> build/bdist.-x86_64/egg/SeleniumLibrary/keywords
copying build/lib/SeleniumLibrary/keywords/tableelement.py -> build/bdist.-x86_64/egg/SeleniumLibrary/keywords
copying build/lib/SeleniumLibrary/keywords/waiting.py -> build/bdist.-x86_64/egg/SeleniumLibrary/keywords
copying build/lib/SeleniumLibrary/keywords/webdrivertools.py -> build/bdist.-x86_64/egg/SeleniumLibrary/keywords
copying build/lib/SeleniumLibrary/keywords/window.py -> build/bdist.-x86_64/egg/SeleniumLibrary/keywords
creating build/bdist.-x86_64/egg/SeleniumLibrary/locators
copying build/lib/SeleniumLibrary/locators/__init__.py -> build/bdist.-x86_64/egg/SeleniumLibrary/locators
copying build/lib/SeleniumLibrary/locators/customlocator.py -> build/bdist.-x86_64/egg/SeleniumLibrary/locators
copying build/lib/SeleniumLibrary/locators/elementfinder.py -> build/bdist.-x86_64/egg/SeleniumLibrary/locators
copying build/lib/SeleniumLibrary/locators/windowmanager.py -> build/bdist.-x86_64/egg/SeleniumLibrary/locators
creating build/bdist.-x86_64/egg/SeleniumLibrary/utils
copying build/lib/SeleniumLibrary/utils/__init__.py -> build/bdist.-x86_64/egg/SeleniumLibrary/utils
copying build/lib/SeleniumLibrary/utils/deprecated.py -> build/bdist.-x86_64/egg/SeleniumLibrary/utils
copying build/lib/SeleniumLibrary/utils/librarylistener.py -> build/bdist.-x86_64/egg/SeleniumLibrary/utils
copying build/lib/SeleniumLibrary/utils/seleniumversion.py -> build/bdist.-x86_64/egg/SeleniumLibrary/utils
copying build/lib/SeleniumLibrary/utils/types.py -> build/bdist.-x86_64/egg/SeleniumLibrary/utils
creating build/bdist.-x86_64/egg/SeleniumLibrary/utils/events
copying build/lib/SeleniumLibrary/utils/events/__init__.py -> build/bdist.-x86_64/egg/SeleniumLibrary/utils/events
copying build/lib/SeleniumLibrary/utils/events/event.py -> build/bdist.-x86_64/egg/SeleniumLibrary/utils/events
copying build/lib/SeleniumLibrary/utils/events/scope_event.py -> build/bdist.-x86_64/egg/SeleniumLibrary/utils/events
byte-compiling build/bdist.-x86_64/egg/SeleniumLibrary/__init__.py to __init__.pyc
byte-compiling build/bdist.-x86_64/egg/SeleniumLibrary/errors.py to errors.pyc
byte-compiling build/bdist.-x86_64/egg/SeleniumLibrary/base/__init__.py to __init__.pyc
byte-compiling build/bdist.-x86_64/egg/SeleniumLibrary/base/context.py to context.pyc
byte-compiling build/bdist.-x86_64/egg/SeleniumLibrary/base/librarycomponent.py to librarycomponent.pyc
byte-compiling build/bdist.-x86_64/egg/SeleniumLibrary/base/robotlibcore.py to robotlibcore.pyc
byte-compiling build/bdist.-x86_64/egg/SeleniumLibrary/keywords/__init__.py to __init__.pyc
byte-compiling build/bdist.-x86_64/egg/SeleniumLibrary/keywords/alert.py to alert.pyc
byte-compiling build/bdist.-x86_64/egg/SeleniumLibrary/keywords/browsermanagement.py to browsermanagement.pyc
byte-compiling build/bdist.-x86_64/egg/SeleniumLibrary/keywords/cookie.py to cookie.pyc
byte-compiling build/bdist.-x86_64/egg/SeleniumLibrary/keywords/element.py to element.pyc
byte-compiling build/bdist.-x86_64/egg/SeleniumLibrary/keywords/formelement.py to formelement.pyc
byte-compiling build/bdist.-x86_64/egg/SeleniumLibrary/keywords/frames.py to frames.pyc
byte-compiling build/bdist.-x86_64/egg/SeleniumLibrary/keywords/javascript.py to javascript.pyc
byte-compiling build/bdist.-x86_64/egg/SeleniumLibrary/keywords/runonfailure.py to runonfailure.pyc
byte-compiling build/bdist.-x86_64/egg/SeleniumLibrary/keywords/screenshot.py to screenshot.pyc
byte-compiling build/bdist.-x86_64/egg/SeleniumLibrary/keywords/selectelement.py to selectelement.pyc
byte-compiling build/bdist.-x86_64/egg/SeleniumLibrary/keywords/tableelement.py to tableelement.pyc
byte-compiling build/bdist.-x86_64/egg/SeleniumLibrary/keywords/waiting.py to waiting.pyc
byte-compiling build/bdist.-x86_64/egg/SeleniumLibrary/keywords/webdrivertools.py to webdrivertools.pyc
byte-compiling build/bdist.-x86_64/egg/SeleniumLibrary/keywords/window.py to window.pyc
byte-compiling build/bdist.-x86_64/egg/SeleniumLibrary/locators/__init__.py to __init__.pyc
byte-compiling build/bdist.-x86_64/egg/SeleniumLibrary/locators/customlocator.py to customlocator.pyc
byte-compiling build/bdist.-x86_64/egg/SeleniumLibrary/locators/elementfinder.py to elementfinder.pyc
byte-compiling build/bdist.-x86_64/egg/SeleniumLibrary/locators/windowmanager.py to windowmanager.pyc
byte-compiling build/bdist.-x86_64/egg/SeleniumLibrary/utils/__init__.py to __init__.pyc
byte-compiling build/bdist.-x86_64/egg/SeleniumLibrary/utils/deprecated.py to deprecated.pyc
byte-compiling build/bdist.-x86_64/egg/SeleniumLibrary/utils/librarylistener.py to librarylistener.pyc
byte-compiling build/bdist.-x86_64/egg/SeleniumLibrary/utils/seleniumversion.py to seleniumversion.pyc
byte-compiling build/bdist.-x86_64/egg/SeleniumLibrary/utils/types.py to types.pyc
byte-compiling build/bdist.-x86_64/egg/SeleniumLibrary/utils/events/__init__.py to __init__.pyc
byte-compiling build/bdist.-x86_64/egg/SeleniumLibrary/utils/events/event.py to event.pyc
byte-compiling build/bdist.-x86_64/egg/SeleniumLibrary/utils/events/scope_event.py to scope_event.pyc
creating build/bdist.-x86_64/egg/EGG-INFO
copying src/robotframework_seleniumlibrary.egg-info/PKG-INFO -> build/bdist.-x86_64/egg/EGG-INFO
copying src/robotframework_seleniumlibrary.egg-info/SOURCES.txt -> build/bdist.-x86_64/egg/EGG-INFO
copying src/robotframework_seleniumlibrary.egg-info/dependency_links.txt -> build/bdist.-x86_64/egg/EGG-INFO
copying src/robotframework_seleniumlibrary.egg-info/requires.txt -> build/bdist.-x86_64/egg/EGG-INFO
copying src/robotframework_seleniumlibrary.egg-info/top_level.txt -> build/bdist.-x86_64/egg/EGG-INFO
zip_safe flag not set; analyzing archive contents...
creating 'dist/robotframework_seleniumlibrary-3.2.0.dev1-py2.7.egg' and adding 'build/bdist.-x86_64/egg' to it
removing 'build/bdist.-x86_64/egg' (and everything under it)
Processing robotframework_seleniumlibrary-3.2.0.dev1-py2.7.egg
Removing /usr/lib/python2.7/site-packages/robotframework_seleniumlibrary-3.2.0.dev1-py2.7.egg
Copying robotframework_seleniumlibrary-3.2.0.dev1-py2.7.egg to /usr/lib/python2.7/site-packages
robotframework-seleniumlibrary 3.2.0.dev1 is already the active version in easy-install.pth

Installed /usr/lib/python2.7/site-packages/robotframework_seleniumlibrary-3.2.0.dev1-py2.7.egg
Processing dependencies for robotframework-seleniumlibrary==3.2.0.dev1
Searching for robotframework>=2.8.7
Reading https://pypi.python.org/simple/robotframework/
Best match: robotframework 3.0.2
Downloading https://pypi.python.org/packages/3e/79/d8b9a7ea833cf4f33d51c0d5f24b825ac72105bf30c147b472da10895143/robotframework-3.0.2.tar.gz#md5=ea49a54b9d7e38302712194e85c37eaa
Processing robotframework-3.0.2.tar.gz
Writing /tmp/easy_install-dWKDCF/robotframework-3.0.2/setup.cfg
Running robotframework-3.0.2/setup.py -q bdist_egg --dist-dir /tmp/easy_install-dWKDCF/robotframework-3.0.2/egg-dist-tmp-DzFqIq
no previously-included directories found matching 'src/robot/htmldata/testdata'
zip_safe flag not set; analyzing archive contents...
robot.pythonpathsetter: module references __file__
robot.htmldata.normaltemplate: module references __file__
robot.utils.importer: module references __file__
Adding robotframework 3.0.2 to easy-install.pth file
Installing pybot script to /usr/bin
Installing robot script to /usr/bin
Installing rebot script to /usr/bin

Installed /usr/lib/python2.7/site-packages/robotframework-3.0.2-py2.7.egg
Searching for selenium>=2.53.6
Reading https://pypi.python.org/simple/selenium/
Best match: selenium 3.11.0
Downloading https://pypi.python.org/packages/d4/28/8124d32415bd3d67fabea52480395427576b582771283e89ce10a56d9e5b/selenium-3.11.0.tar.gz#md5=c565de302e12ffaf7e59c1e47b45bbef
Processing selenium-3.11.0.tar.gz
Writing /tmp/easy_install-qpbhBe/selenium-3.11.0/setup.cfg
Running selenium-3.11.0/setup.py -q bdist_egg --dist-dir /tmp/easy_install-qpbhBe/selenium-3.11.0/egg-dist-tmp-1kDrKs
warning: no files found matching 'selenium/selenium.py'
warning: no files found matching 'LICENSE'
Adding selenium 3.11.0 to easy-install.pth file

Installed /usr/lib/python2.7/site-packages/selenium-3.11.0-py2.7.egg
Finished processing dependencies for robotframework-seleniumlibrary==3.2.0.dev1

もしProxy環境であれば環境変数にProxy設定を行ってから実行します

※サンプルはユーザ認証が必要ない場合です。

# export HTTP_PROXY=http://proxy.example.com:8080
# export HTTPS_PROXY=http://proxy.example.com:8080

実行後に環境変数を確認すると次のような登録が行われている

HTTPS_PROXY=http://proxy.example.com:8080
HTTP_PROXY=http://proxy.example.com:8080

ブラウザを開くだけのテストケースを動かす

動作確認のため。ブラウザを開くだけのテストケースを作って動かしてみましょう。

テストケース

*** Settings ***
Documentation  テスト
Library   Selenium2Library

*** Variables ***
${url}    開くサイトのURL

*** Test Cases ***
ブラウザを開く
    Open Browser    ${url}    firefox
    Maximize Browser Window

Selenium2Libraryが無いというエラー

$ pybot browser-test.txt
[ ERROR ] Error in file '/home/centos/work/browser-test.txt': Non-existing setting 'Library Selenium2Library'.
==============================================================================
Browser-Test :: テスト
==============================================================================
ブラウザを開く                                             | FAIL |
No keyword with name 'Open Browser' found.
------------------------------------------------------------------------------
Browser-Test :: テスト                               | FAIL |
1 critical test, 0 passed, 1 failed
1 test total, 0 passed, 1 failed
==============================================================================
Output:  /home/centos/work/output.xml
Log:     /home/centos/work/log.html
Report:  /home/centos/work/report.html

このエラーで調べたところ、古いパッケージをインストールしているらしいとのこと、pipコマンドでアップグレードをするべきということでアップグレードを実施してみました。

# pip install --upgrade robotframework-selenium2library
Collecting robotframework-selenium2library
  Downloading robotframework_selenium2library-3.0.0-py2.py3-none-any.whl
Requirement already up-to-date: robotframework-seleniumlibrary>=3.0.0 in /usr/lib/python2.7/site-packages/robotframework_seleniumlibrary-3.2.0.dev1-py2.7.egg (from robotframework-selenium2library)
Requirement already up-to-date: selenium>=2.53.6 in /usr/lib/python2.7/site-packages/selenium-3.11.0-py2.7.egg (from robotframework-seleniumlibrary>=3.0.0->robotframework-selenium2library)
Requirement already up-to-date: robotframework>=2.8.7 in /usr/lib/python2.7/site-packages/robotframework-3.0.2-py2.7.egg (from robotframework-seleniumlibrary>=3.0.0->robotframework-selenium2library)
Installing collected packages: robotframework-selenium2library
Successfully installed robotframework-selenium2library-3.0.0
You are using pip version 8.1.2, however version 9.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

pipも古いということなのでpipもアップグレードを実施してみました。

# pip install --upgrade pip
Collecting pip
  Downloading pip-9.0.1-py2.py3-none-any.whl (1.3MB)
    100% |????????????????????????????????| 1.3MB 941kB/s
Installing collected packages: pip
  Found existing installation: pip 8.1.2
    Uninstalling pip-8.1.2:
      Successfully uninstalled pip-8.1.2
Successfully installed pip-9.0.1

WebDriverException: Message: ‘geckodriver’ executable needs to be in PATH.

Selenium2Libraryのエラーは解消しましたが、別のエラーが発生しました。

$ pybot browser-test.txt
==============================================================================
Browser-Test :: テスト
==============================================================================
ブラウザを開く                                             | FAIL |
WebDriverException: Message: 'geckodriver' executable needs to be in PATH.
------------------------------------------------------------------------------
Browser-Test :: テスト                               | FAIL |
1 critical test, 0 passed, 1 failed
1 test total, 0 passed, 1 failed
==============================================================================
Output:  /home/centos/work/output.xml
Log:     /home/centos/work/log.html
Report:  /home/centos/work/report.html

geckodriverというのはFirefoxとPythonのDriverのようです。

  1. 下記からDriverをダウンロードします。(2018/03/15時点のバージョン)
  2. https://github.com/mozilla/geckodriver/releases/download/v0.20.0/geckodriver-v0.20.0-linux64.tar.gz
    
  3. ダウンロードしたファイルを解凍します
  4. # tar zxvf geckodriver-v0.20.0-linux64.tar.gz
    geckodriver
    
  5. 解凍したDriverを/usr/loval/bin以下にコピーします
  6. # cp -p geckodriver /usr/local/bin/
    # ll /usr/local/bin/
    合計 8716
    -rwxrwxr-x. 1 2000 2000 8921747  3月 13 08:24 geckodriver
    

こんな感じで、完全ではないですが Robot FrameworkとSeleniumが動くとこまできました。