第119回 “Selenese” Selenium Commandsを読んでみた

“Selenese” Selenium Commandsを読んでみました。

自分用にまとめてみます。


(勘違い、読み違い等ありましたら教えていただけるとうれしいです。 英語的にわからないところが2割ほどありました.....)


読んだのはココ
Selenium - Web Browser Automation


コマンドに関しての詳しい説明が書かれています。

ページの要素を検証する

UIの要素を検証するのが、
Webページのテストの自動化では、
まあ、もっともよくあることですわな。


そこで、
テスト方法の違いを理解しておくのは大事ですわ
ということですねん。


つぎの3つの方法があげられまっせ(まあ例としてやけど)


1. ある要素がページのどこかにあるかどうか?
2. 特定のテキストがページのどこかにあるかどうか?
3. 特定のテキストがページの特定の位置にあるかどうか?

Assertion or Verification?

assert にすんのんか verify にすんのか、
どっちにすんのんかは大事やで。


テストに失敗したら、
すぐ問題箇所を直したいときとかあるやろ?
そういうときは、中断するassertやで。


一方やな、
テストに失敗する箇所を全部先に洗い出したいときも
ありますわな。


assertは、中断しますけど、
verifyはしませんわ。
これ重要でっせ。


いっちゃんええーのは、
テストを論理的にグループにするこっちゃ
と書かれている(利点がわからなかった....)。


verifyTextPresent

verifyTextPresentコマンドは、
特定のテキストが、ページのどっかにあるかどうかverifyできるで。
これは、1つのパラメータを取るんや、例えばやな

verifyTextPresentほげ
こんな感じやがな。


これは、テキストがあるかどうか知りたいときに使うんやで、
特定の箇所に欲しいときには使ったらアカンで。


verifyElementPresent

これは、テキストちゃうで、
HTML tagをチェックするためのコマンドやで。

verifyText

テキストとUI要素両方をテストしたいときに使うんやで。
(特定のテキストが特定の位置にあるかのテスト)


verifyTextは、位置を指定してやらなアカン。
XPathとDOMが選べるわ。

Locating Elements

多くのSeleniumのコマンドは、targetが必要やわな。
(要素がどこにあるかということの指定)


Default Locators

次の中から位置の指定はできるで、状況に応じて選ぶんとええよ。


documentから始まるDOM。
//から始まるXPath
identifierを使うヤツ。

Locating by Identifier

identifierを使うヤツは、
HTMLの属性のidとかnameを使うやつなんや。


identifier=
でこれは、identifierを使って、位置指定してんねやで
ってSeleniumに教えたってや。
でも、identifier使うヤツ、デフォルトやから、
実は、付けんでもよかったりするんやけどね。

Locating by Id

identifier使うヤツは、nameとかも見てくれるけど、
idだけ見たいときは、
id=
で、Seleniumに位置を指定したってや(たぶん)。


Locating by Name

同様にして、nameで教えたいときは、
name=
でやがな。


XPathとかDOMとちごうて、
これの方が柔軟やで。
ページの構造とか決まってへんときあるやろ、
そういうとき、idとかnameで指定できたら
便利やがな。

Locating by XPath

XMLドキュメントで、
XPathは位置を指定するのに使えるわけや。


XPathの指定は、//から始めるで。
だから、xpath= は必要ないんや。

Locating Hyperlinks by Link Text

ハイパーリンクでも指定できるで、
link=
で指定してやるんや。

Locating by DOM

Document Object Model
DOMやがな。

documentから始まるで。
だから
dom=
は絶対必要というわけではないんやな。

Locating by CSS

CSSでも指定できるで、
css=
で、指定したってな。


Matching Text Patterns

パターンちゅーのも、Seleniumコマンドでは、
よく使われるんやな。


たとえば、
verifyTextPresent, verifyTitle, verifyAlert, assertConfirmation, verifyText, verifyPrompt
とかやな。よーさんあるやろ。


linkで位置指定するやつは、パターン使えるんやで。

Globbing Patterns

グログやね。
DOSとかUnix, Linuxコマンドラインで使われているやつやね。


* と [ ] のみがサポートされてるんやわ。


glob:
って書く事で、グログ使いますって、
Seleniumに教えたってな。


Regular Expression Patterns

正規表現やがな。
グロブは * と [ ] だけのサポートやったけど、
正規表現は結構、いろんな記号使えるで。


regexp:
正規表現やでってSeleniumに教えたってな。

Exact Patterns

これは、特別な記号はつかわへんねや。
(完全一致に使うと思われる)


The AndWait Commands

普通のコマンドとこのAndWaitコマンドの違いわやな、
普通のコマンドはできるだけ早く次のコマンド実行しようとするけど、
AndWaitは待つんやがな。ページ読まれんのを待っとくなましってなもんや。

Sequence of Evaluation and Flow Control

if文みたいになものは、Selenese自体にはサポートされてませんのや。


しかし、けっこう必要やんね、if文系のやつってもんわ。
次の3つのオプションがあるんやで。


1. Selenium-RC
2. storeEvalコマンドをつかったJavaScript snippet
3. 51 Elliot: Selenium IDE Flow Control - Goto and While Loopsで紹介されてるものをインストール


Store Commands and Selenium Variables

The plain storeコマンドが一番ベーシックなstoreコマンドやね。
2つのパラーメータ取るわ。


使うときは、${ } で囲うというわけわけ。

JavaScript and Selenese Parameters

JavaScriptもパラメータに成り得たりする。
javascript{ } で囲うとよい。


echo - The Selenese Print Command

ただ単に、printするだけのechoコマンドなんてのもある。

第118回 Developing Test Cases With Selenium-IDEを読んでみた

Developing Test Cases With Selenium-IDEを読んでみました。

自分用にまとめてみます。


(勘違い、読み違い等ありましたら教えていただけるとうれしいです。 英語的にわからないところが2割~3割ほどありました.....)


読んだのはココ
Selenium - Web Browser Automation

イントロダクション

まあ、IDEは便利ですよと。

IDEをインストールしよう

Firefoxのアドオンでいけますよ。

IDEの特徴

メニューバー

テストケースを作ったり、開いたり、保存したりできる。


Edit menuは、
コピーしたり貼付けたり、
消したり、
アンドゥしたり、
コマンドを選択したりできる。


オプションメニューでは、設定をいじれる。
特定コマンドのtimeout valueとかいじれる。
保存形式の言語を選んだりもできる(HTMLなど)。

ユーザ定義のエクステンションとか付け加えれる。

ツールバー

ツールバーは、あなたのテストをコントロールするためのボタンがある。
(コントロールとは、テストを実行したり、止めたりといったことみたい)

デバッグのための、ステップ実行もある。


一番右の赤いボタンはrecord(レコード、保存、録画)ボタンである。
※以後、録画ボタンとする。



Run All:
複数のテストケースが読み込まれているとすべてのテストケースを実行できる。


Run:
現在選択されているテストケースを実行する。ひとつだけのテストが読み込まれているときは、Run Allと同じ機能。


Pause/Resume:
テストを、ストップしたり、リスタートしたりできる。



Step:
ステップ実行。
テストケースをデバッグするときに使える。
1回につき1コマンド実行される。



TestRunner Mode:
Selenium-Coreで使うようだ.....



Apply Rollup Rules:
なんか、アドバンスドな機能らしい。



Record:
録画ボタン。(右の赤いボタン)



テストケースペイン

スクリプトはテストケースペインに表示される。
テストケースペインは2つのタブを持つ。
ひとつは、テーブルフォーマットで表示するものだ。
そしてももうひとつは、ソースで表示するものだ。



ソースを表示するソースタブは、ネーティブフォーマットで表示する。
デフォルトはHTMLだ。
テストケースを横方向で編集したりできる。
コピーとかカットとか貼付けとかね。



下にある3つの入力フォーム
Command,Target,Valueは、
今選択されているコマンドとパラメータを表している。


Command入力欄で、
タイプするとドロップダウンリストからコマンドを選ぶこともできる。

ログ/リファレンス/UI-Element/ロールアップペイン

一番したのペインは、
4つの機能
(ログ/リファレンス/UI-Element/ロールアップペイン)
を持っている。
タブで4つのうちから表示したいものを1つ選ぶ。

ログ

テストケースを実行したとき、
エラーメッセージとインフォメーションメッセージが自動的に表示される。
たとえこのタブを選択していなくても表示される。
このメッセージはデバッグとかに役立つぜ。
クリアーボタンを押すと、ログをクリアできる。
情報ボタンは、ドロップダウンで、色んなレベルのインフォメーションを選択できる。

リファレンス

テーブルモードで編集しているときは、
リファレンスタブが選ばれている(本当か?試してみないと)。
テーブルモードでは、今選択中のコマンドの説明が見れる。

UI-Element

..... よくわからんかった.....

ロールアップペイン

..... よくわからんかった...




テストケースを作ろう

テストケースを作るには、だいたい3つの方法がある。

方法1. 録画(レコード)

だいたいのユーザは録画から入る。
なので、一番右の赤いボタン(録画ボタン)はデフォルトでONである。
(ユーザーエクステンションでデフォルトをOFFにできるもよう)


録画モード中は、
テストケースにコマンドが勝手にインサートされていく(作られていく)。
例えば、
リンクをクリックしたときとか、
値を入れたときとか、
ドロップダウンを選んだり、
チェックボックスをチェックしたときなんかね。


"gotchas"って機能があるようだ。
よくわからないが、結構必要そうな機能な気がする。


方法2. VerificationsとAssertsを右クリックで付け加える

どうやら右クリックして出て来るやつをContext Menuと呼んでいるもよう。
詳しくは他のページで紹介するとある。
ここでは、
どのようにテストケースにVerificationsとAssertsを足すかと言う事を紹介。


Selenium IDEが出ているときに、ブラウザの上で右クリック。
メニューが出て、verify や assert コマンドを選べる。
(やればやるほど選べるコマンドが増える(?))



パラグラフの先頭とか右クリックして確かめてみるとよい。


方法3. 編集(Editing)

コマンドの挿入

テーブルビューなら、
コマンドを入れたいところにコマンドを挿入すればよい。
右クリックして、コマンドを選択すればよい。入力欄とか使える。


ソースビューなら、
HTMLタグを編集すればよい。
3カラムのテーブルを作ればよいね。

コメントの挿入

コメントを入れたいときに調べる


デバッグ

多くのユーザはデバッグの経験があるから、
ここではデバッグのことは教えない。
もし、初めてなら、あなたの組織の開発者に聞く事をお勧めする。
(開発者ってことは俺ってこと.....か....)


ブレークポイントとスタートポイント

ブレークポイントをセットできる。
コマンドを選択して、右クリック、ブレークポイントを選択することだ。


スタートポイントも右クリックからセットしたりクリアーしたりできる。



あとの項目は.....

ちょっとした紹介だったり、
急務で必要な内容でもないので割愛。

第117回 Mac(leopard)をcommandキーではなくcontrolキーで使いやすく

前回は、commandキーとファンクションキーとの併用で、
使いやすくしましたが、controlキーとファンクションキーでも使いやすくなることが判明。


キーボードでMacのDock やツールバー、メニューバーを操作する方法 / Inforati

Ctr + f3 (Docの選択)

tab および 矢印キーで移動

Ctr + f4 (全アプリケーションでのウインドウ切り替え)

f9だと、縮小されたウインドウから選択することになるが、
Ctr + f4だと押した瞬間に次のウインドウに即時に切り替わる。
(しかし、やはり最小化されているのは切り替わらない)

第116回 Mac(leopard)を少し使いやすく

あまりにもWindowsの仕様にになれているため、
Mac(leopard)の仕様にとまどっていました。
アプリケーションの切り替えには以下のようにすると便利のようです。


fnキーの使用タイミングを逆にする

Macに標準でついてきたキーボードだと
ファンクションキーに、音量の調整などの機能がついており、
アプリケーションの切り替えなどの機能を使いたい場合は、「fnキー」と同時押しとという
結構不便を強いられていました。


ということで、「fnキー」を押すと、音量調整などの機能が使えるように、
fnキーを使うタイミングを逆にするには、

システム環境設定 > キーボードとマウス > キーボードタブ
> F1、F2などのすべてのキーを標準のファンクションキーとして使用 をチェック

http://amegan.com/maclog/2009/01/fn/

f9(全アプリケーションでのウインドウ切り替え)

fnキーをおさないですむようになったので、
f9で全アプリケーションでのウインドウ切り替えができます。
デスクトップがやや黒くなって全ウインドウ(Docに最小化されているのは除く)が縮小して表示されるので、あとはキーボードの矢印キーから使いたいウインドウを選択。

command + tab (アプリケーションの切り替え)

Windowsのalt + tabと違って、ウインドウごとに切り替えることはできず、
アプリケーション単位でしか切り替えられない。
alt + tab に近いのは前述のf9の印象。

command + f1 (同アプリケーションでのウインドウの切り替え)

command + tabではアプリケーションしか切り替わらない。
command + f1は同アプリケーションでのウインドウを切り替えれるので、
command + tabでアプリケーションを選択して、command + f1でウインドウを切り替えるのがよさそうだ(だが、これもDocに最小化しているものには切り替わらない)。

第114回 知っておきたいLinuxもしくはUnixのコマンド

社会人になって、
LinuxもしくはUnixを使って開発する仕事を任されるなら、
次のコマンドは知っておきたいものです。


(なお、全OSを知り尽くしているわけではありませんので、
下で紹介している動きとは違う動きをするものがあるかもしれません)

uname -a

-aオプションをつけることで、
OSの名前、バージョンなどたくさんの情報がわかります。

家では1台のコンピュータにしか接続しない場合がおおいかもしれないですが、
会社に入ると色んなコンピュータで作業をしないといけないものです。
いま自分がはいっているコンピュータはなんなのか把握する必要があります。

su

ユーザを切り替えることができます。
rootになって作業しないといけないときなどに使います。

id

ターミナルを使用中のユーザ名やグループなどがわかる。
suを使っていて「あれ?いま俺、だれだっけ?」というときに使えます。
whoamiというコマンドもありますが、idの方が情報が多い。

sudo

suではユーザが切り替わってしまいますが、

sudo コマンド

とすることで、rootでそのコマンドを実行できることができます。

また、

sudo -u ユーザ コマンド

と -uオプションを使えば、-uオプションで指定したユーザでコマンドを実行できます。


cp -p

以下のcpコマンドが使われる場面を考えてみましょう。

cp hoge.txt foo.txt   # foo.txtが存在していない場合
cp hoge.txt foo.txt   # foo.txtが存在している場合

foo.txtが依存していない場合は、umaskに基づいてfoo.txtの権限が決まります。
foo.txtが存在いている場合は、もともとのfoo.txtの権限が残ります。


hoge.txtの権限も残してコピーしたいとします。
そういうときは、

cp -p hoge.txt foo.txt

と -pオプションを使います。


diff

ファイルの差分(違い)を比較するコマンドです。
ソースコードのレビュー時などに使われます。


レビューで指摘された部分がちゃんと訂正されているのかどうかといったことや、
既存のファイルを改修したときに改修漏れはないか、
もしくは余計なところまで変えてしまっていないかなどに使われます。


tail -f

tailコマンドに-fオプションをつけることで、ファイルを読み続けることができます。
ログファイルにちゃんと値が書き込まれているかなどを確かめるのに便利です。


grep

ファイルの中身を検索できます。
Hoge.pm
というモジュールを使っているソースを見つけたいときは、

grep 'use Hoge' *

などで探してみるとよいでしょう。


find

ファイルを検索できるコマンドです。
Hoge.pmというファイルを探したいときなどに使えます。


cd -

おもむろに、どこかのディレクトリにcdで移動してみましょう。
その後に、

cd -

すると、ひとつ前にいたディレクトリに戻る事ができます。

env

環境変数を表示できます。


また、以下のようにすることで

env 環境変数=値 コマンド

一次的に環境変数の値を変えてコマンドを実行できます。


例:

$ date
2009年 6月 6日 土曜日 20時13分38秒 JST

$ env LANG=C date
Sat Jun  6 20:13:53 JST 2009

man

コマンドの説明が読める。
言わずと知れたマンコマンドです。


上記説明は、簡潔に書いていますので、
詳しい説明はmanを参照するようにしましょう。


manの読み方は、
ビンゴ中西のほげほげmanのSYNOPSIS(書式)の読み方

第115回 Mac(leopard)重てぇえ と思ってたけどこれで解決した

Macleopardから初めて使いだしたんですが、
入れた当初から重たいと思っていました。



ふと、今日、電車で隣にたまたま乗り合わせた人がmac bookを使っていたんですが、
色んなアプリを使っているにもかかわらず、けっこうサクサク動いてるっぽい!!


そ、そんな!!馬鹿な!?



ということで、調べてみました。


といっても皆使っているわけだし、それほど重たいものではないのだろうと思っていたんですが、やっと調べられるまとまった時間ができたということです。


終了しないとアプリケーションは終了しない

Windowsだと、
×ボタンで窓を閉じればアプリケーションは終了しますが、
Macはなんと終了しないんですね! 驚きです!!
ウインドウを閉じてもアプリケーションが終了しない! | Mac | できるネット


Dashboardダッシュボード)を停止する

僕は、マウスの真ん中ボタン(ホイール)を押して窓を上下によくスクロールさせてたんですが、真ん中ボタン押すとダッシュボードが出てくるんですよね。で、困っていました。


で、さらに実は、このダッシュボード! 結構メモリをくっていたことが判明!!
いや、俺、使ってないし! さっそく起動しないようにせねば!!!
502 Bad Gateway


ホイールも使えるようになって、一石二鳥!!


アクティビティモニタ重要

アクティビティモニタを使えば、CPU使用率や、メモリの使われ具合がわかります。
アクティビティモニタって名前だったのか! いや、そんなん知らんがな!
ということで、このアクティビティモニタはどこにあるかというと、

アプリケーション > ユーティリティ の下

です。



Macの設定に関するものは、なんか全部、
「システム環境設定」にあると勝手に思い込んでいました。
まあ、確かにメモり見るのとかは設定ではないですね.............


実はこのユーティリティフォルダ結構重要です。
「ターミナル」(これがないとプログラム楽しめない)
「ディスクユーティリティ」(ディスクの状態を検証できる)
もこの下です。



操作等で他にも気になっていたことがあったので以下3冊も参照しました。

MacOSXv10.5Leopardパーフェクトマスター (Perfect Master Series)

MacOSXv10.5Leopardパーフェクトマスター (Perfect Master Series)

はじめてのMacで困った!これで解決 (PRIME MASTER SERIES)

はじめてのMacで困った!これで解決 (PRIME MASTER SERIES)

はじめてのMacOSX Leopard v10.5対応 (BASIC MASTER SERIES)

はじめてのMacOSX Leopard v10.5対応 (BASIC MASTER SERIES)

第113回 Selenium Basicsを読んでみた

Selenium Basicsを読んでみました。
自分用にまとめてみます。

(勘違い。読み違い等ありましたら教えていただけるとうれしいです。 英語的にわからないところが2割ほどありました.....)


読んだのはココ:
Selenium - Web Browser Automation

Selenese

Seleniumのコマンド(command set)はSeleneseと呼ばれるようだ。(なんて発音するのだろうか.....)


コマンドは3つにわけられる

コマンドは、
Actions, Accessors, Assertionsにわけられる。


Actionsは、クリックやオプションの選択などをするもの。エラーが起これば、テストはストップする。


Accessorsは、.... 変数に代入できる。


Assertionsは、ページタイトルとか、チェックボックがチェックされているとかを確認するもの。

3つのモード

SeleniumのAssertionsは3つのモードで使用される。
"assert", "verify", "witFor"である。

例えば、assertText, verifyText, waitForTextだ。


assertは失敗するとテストはabortされる(中断されるということかな)。
verifyは失敗してもログにはいて処理は続行される。
waitForは状態がtrueになるまで待つ。Ajaxとかのテストに役立つ。待つ時間は設定によるようだ。

文法

Seleniumのコマンドは、
コマンドと2つのパラメータから成る。
パラメータは必要でないときもある。


HTMLなので、次のようになっている。

<table>
    <tr><td>コマンド</td><td>パラメータ1</td><td>パラメータ2</td></tr>
</table>

コマンドパラメータ1パラメータ2


パラメータが必要でない場合も、tdタグは必要。
例えば、

<table>
    <tr><td>コマンド</td><td></td><td>パラメータ2</td></tr>
</table>

コマンドパラメータ2


1行は1コマンドをあらわしている。

<table>
    <tr><td>コマンド1</td><td>パラメータ1</td><td>パラメータ2</td></tr>
    <tr><td>コマンド2</td><td>パラメータ1</td><td>パラメータ2</td></tr>
</table>

コマンド1パラメータ1パラメータ2
コマンド2パラメータ1パラメータ2

テストスイート

<html>
<head>
<title>Test Suite Function Tests - Priority 1</title>
</head>
<body>
<table>
  <tr><td><b>Suite Of Tests</b></td></tr>
  <tr><td><a href="./テスト1.html">Login</a></td></tr>
  <tr><td><a href="./テスト2.html">Test Searching for Values</a></td></tr>
  <tr><td><a href="./テスト3.html">Test Save</a></td></tr>
</table>
</body>
</html>

みたいにすることで、テスト1.html, テスト2.html, テスト3.htmlの中に書かれたテストが実行されるように読み取れた.... (試してみん事にわからんな)

よく使われるコマンド

open


click/clickAndWait


などなど