第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が必要やわな。
(要素がどこにあるかということの指定)
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 Hyperlinks by Link Text
ハイパーリンクでも指定できるで、
link=
で指定してやるんや。
Matching Text Patterns
パターンちゅーのも、Seleniumコマンドでは、
よく使われるんやな。
たとえば、
verifyTextPresent, verifyTitle, verifyAlert, assertConfirmation, verifyText, verifyPrompt
とかやな。よーさんあるやろ。
linkで位置指定するやつは、パターン使えるんやで。
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の特徴
メニューバー
テストケースを作ったり、開いたり、保存したりできる。
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などのすべてのキーを標準のファンクションキーとして使用 をチェック
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オプションをつけることで、ファイルを読み続けることができます。
ログファイルにちゃんと値が書き込まれているかなどを確かめるのに便利です。
find
ファイルを検索できるコマンドです。
Hoge.pmというファイルを探したいときなどに使えます。
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)重てぇえ と思ってたけどこれで解決した
Macはleopardから初めて使いだしたんですが、
入れた当初から重たいと思っていました。
ふと、今日、電車で隣にたまたま乗り合わせた人がmac bookを使っていたんですが、
色んなアプリを使っているにもかかわらず、けっこうサクサク動いてるっぽい!!
そ、そんな!!馬鹿な!?
ということで、調べてみました。
といっても皆使っているわけだし、それほど重たいものではないのだろうと思っていたんですが、やっと調べられるまとまった時間ができたということです。
終了しないとアプリケーションは終了しない
Windowsだと、
×ボタンで窓を閉じればアプリケーションは終了しますが、
Macはなんと終了しないんですね! 驚きです!!
ウインドウを閉じてもアプリケーションが終了しない! | Mac | できるネット
Dashboard(ダッシュボード)を停止する
僕は、マウスの真ん中ボタン(ホイール)を押して窓を上下によくスクロールさせてたんですが、真ん中ボタン押すとダッシュボードが出てくるんですよね。で、困っていました。
で、さらに実は、このダッシュボード! 結構メモリをくっていたことが判明!!
いや、俺、使ってないし! さっそく起動しないようにせねば!!!
502 Bad Gateway
ホイールも使えるようになって、一石二鳥!!
アクティビティモニタ重要
アクティビティモニタを使えば、CPU使用率や、メモリの使われ具合がわかります。
アクティビティモニタって名前だったのか! いや、そんなん知らんがな!
ということで、このアクティビティモニタはどこにあるかというと、
アプリケーション > ユーティリティ の下
です。
Macの設定に関するものは、なんか全部、
「システム環境設定」にあると勝手に思い込んでいました。
まあ、確かにメモり見るのとかは設定ではないですね.............
実はこのユーティリティフォルダ結構重要です。
「ターミナル」(これがないとプログラム楽しめない)
「ディスクユーティリティ」(ディスクの状態を検証できる)
もこの下です。
操作等で他にも気になっていたことがあったので以下3冊も参照しました。
MacOSXv10.5Leopardパーフェクトマスター (Perfect Master Series)
- 作者: 野田ユウキ,アンカープロ
- 出版社/メーカー: 秀和システム
- 発売日: 2008/04/11
- メディア: 単行本
- クリック: 4回
- この商品を含むブログ (2件) を見る
はじめてのMacで困った!これで解決 (PRIME MASTER SERIES)
- 作者: ダイアローグ
- 出版社/メーカー: 秀和システム
- 発売日: 2008/10/16
- メディア: 単行本
- クリック: 8回
- この商品を含むブログ (4件) を見る
はじめてのMacOSX Leopard v10.5対応 (BASIC MASTER SERIES)
- 作者: 早川厚志
- 出版社/メーカー: 秀和システム
- 発売日: 2008/08/26
- メディア: 単行本
- クリック: 1回
- この商品を含むブログ (2件) を見る
第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
などなど