←このブログを購読する
カテゴリ
-
最新の記事
- MySQLのトラブルあれこれ May 10, 2016
- Slideshow メモ May 7, 2016
- OS X でBrewでインストールしたコマンドのパス設定 March 15, 2016
- 就職しました July 12, 2013
- Blog is now working March 8, 2013
最新のコメント
- オリオン on xobni for outlook
- tmori on Disappointment of HP Media Smart Server EX475
- ななほし on Disappointment of HP Media Smart Server EX475
- HeadWing | Disappointment of HP Media Smart Server EX475 on Upgraded HW for HP Media Smart Server EX475
- HeadWing | Grid Junction - UPdated to version 1.5.1 on Grid Junction for WHS
January 2025 M T W T F S S « May 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
Author Archives: tmori
Salmon Pink Lily
周回遅れのアップです。私達夫婦は日曜日に隣町セバストポルのファーマーズマーケットによく行くのですが、この時期はまだ野菜の本格的な収穫時期ではないので、作物自体よりも野菜の苗や花の苗等が比較的中心となっている時期で、私達も去年3種類程の花をそこに来ているナーサリーの人から仕入れたのですが、うちの庭とも相性よく、冬にはまったく枯れたようになっていた所から、今はきちんと芽を出して順調に生育しているので、今年ももう一つぐらい追加しようと次のような花達を眺めてどれにしようか悩んでいたのでした。 あれこれと悩んだあげく結局うちの奥さんが最終的に選んだのはサーモンピンクのリリーでした。後1ヶ月ぐらいしか花はもたないそうですが、花の色があまりに見事だったので(黄色っぽく見えるかも知れませんが、実際はサーモンピンクです)、これにしました。鉢植えでも2~3年は大丈夫で、順調に株が増えたら株分けしてあげればいいとのことで、そういうふうに順調に生育して欲しいです。
SeleniumでXPath Locatorを使うとIEと相性悪そう
Selenium IDEとXPatherを使っているとついつい手軽にXPathが記述できるので、それを多用してテストを作成していたのですが、FireFoxで実行しているとサクサク動作してくれて、これはいいという感じなのが、IEで実行するとXPath Locatorが使われているところでやたらと遅くなります。CPU使用率もほとんど100%の状態になるし、ちゃんと確認していませんがどうもメモリーリークも発生しているようです。ひとつのブラウザセッションで連続してそういうコマンドを実行しているとどこかでおかしくなって、コマンドタイムアウト例外を投げて結果ファイルも残さずに異常終了してしまいます。 仕方がないので、いくつかにテストを分割してRCをテスト毎に起動することで回避しました。これってDOMに変更するしかないんですかね?
Seleniumでテスト作成するときの留意点
先日書いたTestRunnerだと少し遅くしてやらないとテストが通らない場合があると書いたのですが、そういう場合もあるにはあるのですが、少し注意しないといけない点に気付きました。 waitForNotElementPresent を使って何かが存在しないことをチェックしようとする場合に、チェックする対象が現在のページにも次のページにも存在しない場合、現在のページから次のページに切り替わったことを別なコマンドできちんと確認してからwaitForNotElementPresentで対象をチェックしてやらないと、現在のページでもTrueになってしまうので、不具合が生じる場合があります。って当たり前ですが、最初はちょっと気がつきにくかったりします。検証は基本的にassert*系かverify*系のコマンドで行うべきなのですが、ページの切り替えのついでにwaitFor*でとかやっているうちに上記のような状態に陥る可能性がありますので、やはりルールを決めてそれに従ってページ切り替え確認を行うようにした方がよさそうです。例えば、clickAndWaitでリンククリック後、必ずassertTitleかwaitForTitleをはさんでからverify*系で対象が存在することを検証するとか。
Selenium RCでTestRunnerのデフォルトの速度を設定する
Selenium RCを使ってテストを自動実行させるときに、ブラウザが自動的に起動してTestRunnerが実行されるのですが、この時、コントロールパネルにある速度調整のスライダーは、一番左にあって最速の設定になってしまいます。 これはバグだと思うのですが、Selenium IDEやCoreで実行するとすべて正常終了するのに、RCで実行するとwaitFor*コマンド等であるエレメントが認識されるまで待機するようにしてあげても、そのエレメントにアクセスした時点でそのエレメントが存在しないというようなエラーが発生する場合があります。この場合、TestRunnerの速度スライダーを手動で少し遅くしてあげれば、大抵の場合は、うまく通るようになるようです。それでも通らない場合は、本当にAjax等で何かを待たないといけない場合なので、waitFor*を入れてあげる必要があります。 で、毎回このスライダーを動かす手動操作が入るのは面倒なので、その速度を指定してやりたいのですが、どうも現時点では、RCのコマンドラインパラメータでは指定できないようです。リファレンスには、setSpeedというコマンドが使えるように書いてあるのですが、これを指定するとIDEでもRCでもエラーになってそこで止まってしまいます。さて、どうしようと思い、現時点では直接ソースをいじるしかないと思い、それでやっつけてしまったので、とりあえずメモしておきます。尚、これはSeleneseではなく、JavaやPerl等のプログラミング言語インターフェイスを介せば簡単にsetSpeed相当のコールが使えるはずです。 以下、手順です(jarコマンドを使うのでJDKが必要): 1. まず、selenium-server.jarファイルからcore/scripts/selenium-testrunner.jsというファイルを取り出します。 jar -xvf selenium-server.jar /core/scripts/selenium-testrunner.js 2. runIntervalという変数に値を代入している箇所を見つけます。このメモを書いている時点では、次の2箇所です。 2-1. 変更前: var runInterval = 0; 変更後: var runInterval = 100; 2-2. 変更前: this.runInterval = 0; 変更後: this.runInterval = 100; この修正だけでも一応速度は落ちますが、スライダーの表示が左端にあるままなので、ちょっと気持ち悪いので、下記の場所を修正します(他にもオプションがあります。使用しているのはこちら)。 変更前: objectExtend(HtmlTestRunnerControlPanel.prototype, { initialize: function() … Continue reading
Skybusという$10で乗れる航空会社登場
片道$10からという、かなりセンセーショナルな見出しでSkybusという航空会社が登場しました。 Skybus 機内食は原則としてすべて有料でメニューから客が必要に応じて選択するとか、予約はネットからのみで代理店やフリーダイヤルなどの電話応対もなしとか、飛行機が新型で燃費がいいとかで経費を最大限削って低価格を実現しているそうです。ただし、オハイオ州ベースの会社で現時点では、すべての便はコロンバスが始点か終点の便となる制限付き。でも、片道$10ならコロンバス経由でも2つの便を乗り継げば(ただし、Skybusは荷物の自動転送はしてくれない。客が自分で再度チェックインする必要あり)、$20で例えば西海岸から東海岸へ飛べるわけで、節約優先とすれば、多少の(かなりの?)手間は惜しんでもという客層はいるだろうと思い、ビジネス的に成り立つ可能性もなくはないのかなと、かなり興味が湧いてしまいWebサイトを一生懸命読むはめになったわけです。 それでも片道$10は無理なんじゃないの、どういうビジネスモデルなんだろうと思って、予約状況を見てみるとSan Francisco (ただしOakland空港) からの便の値段を見ると一番安い日でも$75ぐらい、大体は$150になっていて、なんだ全然$10じゃないじゃん。これはまた新手の詐欺かと思って、よく読んでみたら、各フライトで10席だけは$10で乗れるということらしい。まあ、確かにこれはすごい宣伝効果はありますね。それに$150というのはまあ普通だけど、$75はかなり安い方でしょう。先ほどの2便つなげる方法でも片道$150でBostonまでいけるのであれば、悪くはないかも。これは、どこまで客足を確保できるかしばらくウォッチですね。
木製プランター入手
先週、Tuesday Morningでなかなか味のある木製プランターが一つ$10で売っていたのでゲット。最後のひとつずつのようなのでかなり安くなっていて掘出し物と思います。これに後ほどハーブを植える予定。
Seleniumでコメントを入れる方法
Selenium IDEでは、Commentを挿入できますが、これはHTMLの通常のコメントとして保存されるだけで、TestRunnerでテストを実行するときには、当然のことながら表示されません。XPathやDOMオブジェクトでテストターゲットを指定してしまうとテストを作成したときには、何をチェックしているか明白なつもりでも少し時間が経過してから見直すと一見しただけでは一体何をチェックしていたのかわからにくくなってしまうことはよくありそうです。 Seleniumのユーザフォーラムをチェックしていたら、やはりその話題とその解決案が下記に記されていました。 Comment command ちょっとスレッドが長いので要約・整理すると、 Selenium IDEではコメントを挿入すると通常のHTMLコメントとしてしか保存しない。読み込むときも通常のHTMLコメントをテストのコメントとして表示する。 TestRunnerでは、カラムが3つより少ない行は無視する。 これらの性質を利用して、TestRunnerを走らせるときにHTMLのコメントをカラムが1つだけの行に変換して挿入してやれば、テスト実行時や結果ファイルでもIDEで入れたコメントが表に出る。 ということで、下記のスクリプトをSelenium Coreのuser-extensions.js(現在使用していなければこの名前で保存)に追加してやれば、上記のようにIDEで入れたコメントがTestRunnerでも表示されるようになります。Selenium RCの場合は、コマンドラインの引数でユーザエクステンションファイルを指定してやれば、同様の結果を得られます。 フォーラムで指摘されていた修正も反映済みです。 user-extensions.zip
スヌーピー一堂に集まる
今年は、サンタローザのスヌーピー彫像企画の最終年でもうすぐ街中にスヌーピーが置かれるのですが、アーティストが色付けの最終仕上げ段階に入っています。 この写真はPress Democratの写真ギャラリーから拝借。そちらでは他の写真も見れます。
Selenium と使うと便利なユーティリティ
またSeleniumの話ですが、前のエントリでも書いたとおり、TDDで使う分にはソース側を変えれば良いので特に問題にはならないのですが、既存のWebアプリに対してリグレッションテストを作成しようとすると今のバージョンでは、結構致命的になりかねない制限があります。 リファレンスに次のように書いてあります。 In some cases, Selenium will be unable to intercept a call to window.open (if the call occurs during or before the “onLoad” event, for example). 今私がテストを作成しているアプリケーションも結構古いもので、ページの切り替え時にJavascriptのAlertでポップアップウィンドウを出しているようなのですが、これのOKボタンを押すことが今のSeleniumだとどう転んでも出来ないのです。 でも、そこで手動操作を交えないといけないとなるとかなり魅力半減になってしまうのも事実で、少しの変更でバグが沢山出てしまうようなつくりの悪くなってしまったソースをリグレッションテストを通すために修正するというのも本末転倒のような話になってしまいかねません。 解決方法としては、Selenium RCを使用して.netプログラムにテストを変換して(テストの部分の変換はIDEがほぼ自動的にやってくれます)、Seleniumだけではどうしても手が出ない部分は、C#の力技で無理やり操作してしまうというのが一つの方法ですが、これだと開発者でない人にも何とかテストが作成できるというストーリーから離れていってしまうなあと考えあぐね、何か他の操作自動化するツールと組み合わせてできないかなと思って見つけたのがこれです。 UWSC これもブラウザ操作等ができるのですが、その辺はSeleniumの方がずっと出来がよいと思いますが、SeleniumがJavascriptベースのために対応できない部分を補完するのには、結構最適な感じ(通常のWindowsプログラムなのでJavascriptの部分でかち合うことはない)です。私の場合、何とかこのユーティリティを組み合わせることで、Seleniumで閉じれなかったポップアップを閉じれるようになり、ほぼテストを自動化することに成功しました。このツールはオープンソースではありませんが、無償で提供してくださっているので大変ありがたいです。WindowsのAPIやCOM呼び出しもできるので頑張ればかなり強力なツールだと思います。ちょっと困った問題が、UIが全部日本語なんですよね。こちらの人にこれを使えとはちょっと言えないので、何か同等のツールを探さないといけないかも知れません。WinBatchなんかも使えるのかも知れませんが有料ですし、何かいいツールをご存知の方はぜひ教えてください。 とりあえず、Seleniumでのテスト自動化をしようとして、JavascriptのアラートウィンドウをSeleniumで閉じれなくて使用を断念しそうな方は、大いに試す価値があると思います。
Kendall-Jackson Wine Center
先週末に、サンタローザの北端に位置するKendall-Jackson Wine Centerに出かけてきました。自宅からは車で15分程度の距離にあります。と言ってもワインのテイスティングが目的ではなくて、そこのガーデンとぶどう園の散歩がお目当てです。駐車場からワインセンターの方へ歩いていくとまず、下の写真のような表示が目に入ります。ここは、Santa Rosa Junior Collegeと協同でぶどうの品種等を学べるような学習型庭園の場を提供しているのです。 これがワインセンターの外観です。 テイスティングルームは、こんな感じで天井が高くて割と豪華な感じです。 うちのお目当てはガーデンの方なので、記念品で買いたいものも特には見当たらなかったので、ここは眺めるだけで退場。ガーデンの方は、こんな感じです。ハーブと野菜、果実とぶどうが中心のガーデンなので、今の時期は花で満開という感じではありませんが、なかなかきれいに植え込んであり、やはり専門家の作るガーデンは立派だなという感じで勉強になります。 ガーデン自体の説明は、Kendall Jacksonのホームページに結構詳しく書いてありますので、詳細を知りたい人はそちらを見てください。でも、ブルーベリーの実が綺麗になっていたので思わずシャッターを切りました。これが熟して濃紺色になるのが楽しみです。といってもこれを食べられるわけではないのですが。 庭には、こんなガゼボもあって、ピクニックができるようになっています。 庭園を抜けてワインセンターの横に広がるブドウ畑の方へ向かいます。 今は、花が散って、丁度小さいぶどうの実がついている状態です。 ちなみにぶどうが植えられている所に立ってみた所です。私の背丈は168センチ程度ですので大体の規模が想像できると思います。とにかくこちらのぶどう園の規模はでかいです。 こういう立派なガーデンが、サンタローザ近辺には、割と豊富にあるので、随時紹介していきたいと思います。