SOY CMS / Shopの開発で、Jenkinsを利用してテストの自動化を行っている。
※詳しい構成は下記のリンク先の記事に記載がある。
さくらVPSにJenkinsを入れて、Selenium + php-webdriverを動かせるようにする
機能を追加する度に負荷の高いテストコードを追加し続け、
気がついたら、一回のビルドの所要時間が5時間を超えていた。
1日3回ぐらいJenkinsがテストを行ってくれるので、
1日15時間とテスト要因で人を雇ったらブ...
Read More…
Go言語 + Selenium + AgoutiでSOY CMSにログイン出来なかった時に適切にエラーを表示するかを確認してみる。
package main
import (
"log"
"strings"
"github.com/sclevine/agouti"
)
//SOY CMSにログインできなかた時に適切にエラーを表示するか?テスト
func main() {
driver := agouti.ChromeDriver()
err := dri...
Read More…
前回の続きで、seleniumでグーグル検索した後、検索フォームにseleniumuと入力してボタンを押してみる。
下記のコードを入力する。
package main
import (
"log"
"github.com/sclevine/agouti"
)
func main() {
driver := agouti.ChromeDriver()
err := driver.Start()
if err != nil {
log.Fatal(er...
Read More…
Selenium - Web Browser Automation
https://agouti.org/
Go言語でSeleniumとAgoutiを介してChromeブラウザを自動で操作してみる。
SeleniumはJava上でなければ動作しないため、はじめにJavaをインストールする。
Javaは下記のページからダウンロードして、画面の指示に従ってインストールする。
無料Javaソフトウェアをダウンロード
続いて、seleniumu-serverをhttps:...
Read More…
select name="Customer[area]" id="" class="input-pref"
option value=""都道府県名/option
option value="1"北海道/option
option value="2"青森県/option
option value="3"岩手県/option
!-- 他の県は省略 --
/select
以前、上記のコードがあった時に
php-webdriverでどのように京都府の値を選択するか?
と...
Read More…
SOY CMSでは、ラベルブロックの設定あたりでiframeを開いて、
iframe内でリダイレクトしながら設定を進める画面がある。
iframeは以前にTinyMCEのところで操作方法を調べたので、
iframe一ページ分であればなんとかなったけれども、
php-webdriverでTinyMCEに値を挿入する
iframe内でリダイレクトがあると、2枚目のページで指定した要素が見つからないというエラーに遭遇する。
なんでだろうと試行錯誤試し...
Read More…
php-webdriverで現在開いているページのURLを取得する必要が出てきた。
SOY CMSの管理画面では、
記事やラベルの詳細ページを開くとURLの末尾に各々のIDが付与されているため、
URLから指定の記事、もしくはラベルのIDを取得するためにはURLを取得しなければならない。
SOY CMSで標準ページでも任意のブログページのb_blockを使用できるようにした
というわけで、php-webdriverの公式Wikiを調べてみたところ、
WebDriverクラスの...
Read More…
php-webdriverでSOY CMSの記事作成画面のテストコードを作成する時に苦戦した。
php-webdriverでconfirmダイアログをクリックする
どこで苦戦したか?というと、
記事作成画面の本文に値を入力するところで、
SOY CMSの記事作成画面ではTinyMCEというWYSIWYGエディタを利用していて、
SOY CMSの記事投稿画面でYouTubeの動画の挿入ボタンを追加しました
TinyMCE | The Most Advanced WYSI...
Read More…
IT・Webの転職・求人のレバテックさんが運営するレバテックキャリアさんのブログの
Go言語を勉強中という方に読んでほしい記事まとめの企画で当ブログのGo言語の記事が紹介されました。
Go言語を勉強中という方に読んでほしい記事まとめ - レバテックキャリア
紹介された記事はGo言語の標準機能のユニットテストを試してみた記事で、
実際に自分がテストコードを作成した時のフローを紹介が良かったみたいです。
golangでテストを書いてみたのでメモ
企画内のちょっとした紹介ではありま...
Read More…
Jenkins
Jenkinsを開いたら新しいバージョンが公開されたということでアップグレードの通知が表示されていた。
Jenkinsをインストールしているサーバにリモートアクセスして、
Jenkinsのバージョンアップをしたら突然動かなくなった。
エラーメッセージを見たら下記の通り。
PHP Fatal error: Uncaught Facebook\WebDriver\Exception\UnknownServerException: unknown error: cal...
Read More…
さくらVPSにJenkinsを入れて、Selenium + php-webdriverを動かせるようにするでVPSサーバを借りてJenkins用のサーバを組み立ててみた。
継続的インテグレーションに従い、細かい機能追加の度にGitでコミットを行うことで、
機能追加により以前の機能が動作しないといった致命的な不具合の心配がなくなった。
継続的インテグレーション - Wikipedia
一人で開発している身として、Jenkinsが相棒のように感じられるようになったわけだけど、
ビル...
Read More…
php-webdriverでセレクトボックスの値を選択するから引き続きメモ
ブラウザ上で何らかのボタンをクリックすると、
上の画像のように確認用のダイアログが表示されて、このダイアログ上のボタンをクリックすることがあります。
このダイアログのボタンをphp-webdriverでクリックするためには下記のようなコードを書けば良い。
※今回は「退会する」リンクをクリックした時にconfirmのダイアログが表示される
$driver-findElement(WebDriver...
Read More…
php-webdriverでtarget="_blank"付きのアンカータグ対策から引き続きメモ
今回はセレクトボックスの値を選択してみる。
セレクトボックスは今までのinputタグと異なり、
セレクトボックスの場所を指定して、キーボード操作で値を選択するという形で、
値の指定の際の操作が増える。
該当する箇所のHTMLは
select name="Customer[area]" id="" class="input-pref"
option value=""都道...
Read More…
さくらVPS上でSeleniumとphp-webdriverを利用する
前回、さくらのVPSにSeleniumとphp-webdriverを実行するための環境を設けた。
あとはJenkinsを入れるだけだ。
環境
さくらVPS 512
Ubuntu 16.04
Java 1.8.0_151
Jenkins 2.76
Selenium 3.7.1
Xvfb バージョンの調べ方わからず
Chromeドライバ 2.33.506092
Chromium 62.0.3...
Read More…
Selenium - Web Browser Automation
最近の記事でSOY CMS / ShopのUIテストをSeleniumのGUI(Firefoxのアドオン)からFacebook製のphp-webdriverへと作り変えた。
facebook/php-webdriver: A php client for webdriver.
テストを作ったのは良いけれど、ローカル環境だとテスト中に他の作業ができなくなるので、
さくらのVPSを借りてSeleniumを動かせるよう...
Read More…
php-webdriverで任意のラジオボタンをチェックする
前回より引き続き、Seleniumとphp-webdriverのメモ
例えば、
a href="sample.html" id="link"リンク/a
というコードがあったとします。
このリンクをクリックして他のページに遷移したい場合は、
php-webdriverでは、
$driver-getElement(WebDriverBy::linkText("リンク"))-click();
$driver-ge...
Read More…
php-webdriverでSOY CMSにログインしてみる
前回、任意の入力フォームを選んで値を入力して、
任意のボタンを押すという動作をSeleniumとphp-webdriverで自動化してみた。
UIテストの大体の動作は前々回のフォームの内容を取得すると合わせれば対応できるが、
これでは対応できないものがあった。
それは、
性別などで使われるラジオボタンです。
ラジオボタンのHTMLを抜き出してみると、
input type="radio" id=...
Read More…
php-webdriverで指定のフォームに値を入力してみる
前回、Selenium + php-webdriverでSOY CMSのログイン画面でログインIDのフォームに値を入れ、
フォームの値を取り出して端末上に書き出す
という処理を書いてみた。
今回はログインIDとパスワードを入力して、
ログインボタンを押してログインを試してみる。
実際のコードは下記の通り、
※管理画面へログインできるアカウントをID、Pw共に「soycms」とします
?php
requ...
Read More…
Seleniumとphp-webdriverでUIテストの自動化で
Selenium、Chromeドライバとphp-webdriverをインストールした。
今回は基本的な動作分を確認
ワークスペースが~/workspace/soycms/で、
テストコードはsoycmsディレクトリ以下にtestというディレクトリを作成して、
テストコードを~/workspace/soycms/test/test.phpにしてファイルを作成してみる。
※soycmsディレクトリ内にSOY CMSを...
Read More…
アプリ開発において自動化しておきたいものにテストの自動化がある。
今までSOY CMS / ShopはSeleniumのFirefoxプラグインでGUIで一つずつ動作を登録しながらUIのテストコードを作成していたけれども、
Selenium - Web Browser Automation
Jenkinsさんのお力を借りて、
JenkinsさんにSeleniumを実行してもらうべく、
PHPのコードでSeleniumのUIテストのコードを書き直すことにした。
Jenk...
Read More…
golang(Go言語)ではテストが標準で用意されており、
テストコードを書くのが簡単ということで書いてみた。
まずはgoというフォルダを作成して、
sample.goというファイルを作成してみた。
go
└── sample.go
ディレクトリ構造はこんな感じ。
sample.goに下記の様な
ランダムな文字列を作成して、
作成した文字列をMD5でハッシュ化して表示する
というコードを用意した。
package main
import (
"...
Read More…