夏しまなみ

夏休みを利用して1泊2日でしまなみ海道を走ってきました。

今回はしまなみ初めてのCAADさんと一緒です。先輩ヅラして知っているところへ案内しました。

まずは因島大橋脇のはっさく屋。

続いてドルチェ。

昼食を多々羅公園のレストランで取った後、今回の本丸、亀老山展望台へ。炎天下での坂道は本当にしんどい。ゴール手前で足がつって惜しくも走破ならず。次回はゴールまで登り切りたいです。

素敵な景色に疲れも癒されます。CAADさんはフラットベダルで登りました。ようやるなーと思いながら、昨年の自分を見ている気分でした。

夕飯は焼豚玉子飯を食べてビール飲んで早々に就寝しました。

翌日は海岸沿いを松山まで。アップダウンも多くなく平和的で少々物足りないくらい。昨年は辛かった覚えしかないので少しは成長したのかも。

昼食で寄った丸源が思いの外おいしく印象的でした。

呉行きのフェリーで即爆睡。

フェリーのゆったりとした時間も好きです。

楽しい休暇になりました。

はっさく大福食べてきた

はっさく大福を食べにしまなみ海道までドライブ。

尾道からしまなみ海道に入り因島大橋記念公園のはっさく屋へ直行。早々に大福にありつけました。中のはっさくがみずみずしくて美味しいです。

その後生口島に渡り、中華瀬戸田へ。にんにくラーメンと餃子を注文。一日中にんにく臭に悩まされることになりました。写真撮るの忘れたのが残念。

食後のデザートにドルチェへ寄りました。

瀬戸田夏みかん味を注文。

この後バイクの団体さんが。混む前に寄れて良かったです。

ドルチェの横の果物屋さんでは黄色いみかんってのを売っていました。試食したら甘い!って驚いたのですがみかんなんだから当然か。でもレモンに見えますよね。

大三島の盛からフェリーで忠海へ渡り帰宅するコース。フェリーまでの時間を多々羅しまなみ公園で。

自宅から1時間程度で行けるしまなみは天気の良い日の小旅行に最高です。

作業時間入力支援ツール

大人の事情とやらでうちの会社でも毎日の作業内容と時間を記録することになりました。いきなりのことなのでとりあえずはExcelに書けとのこと。開始と終了時間を手打ちって結構きついと思うんですけど。しかも毎日とか…

前職で利用していた社内ツールの記憶を頼りに、Excelに貼り付けるデータを手軽に作成できるツールを試作してみました。サンプルのデータしか入っていないのでとりあえずさらしておきます。

http://jou4.dip.jp/timecard/

データはLocalStorageに保存しています。サーバーへの送信は一切やっていません。

会社に採用してもらえると良いのですが。

黄金山花見

黄金山まで行ってきました。 自転車だときつい坂も車ならあっという間(笑)

大型低気圧の接近で桜は今日で見納めだそうですね。 そのためか平日ながら人も多かったです。

ホント良い天気。

おねんね。

Seleniumのテストをサーバーで実行

GUIのないマシン上でテストを実行する場合は Xvfb を使えば良い様子。マニュアルによると、Xvfb とはディスプレイ等がないマシンで動く X server とのこと。仮想メモリを使って dumb framebuffer をエミュレートするって書いてありますね。

早速試してみました。(firefoxjavaは既にインストール済み。)

$ sudo aptitude install xvfb
$ export DISPLAY="localhost:1.0"
$ Xvfb :1 -screen 0 1024x768x8 &
$ java -jar test.jar

テストの自動化だけでなく、レスポンスの計測や監視などにも使えそうです。

参考: Selenium RCをCentOS上のFireFoxで実行してみた

リダイレクトやframeが絡む場合のSelenium

最近UIのテストで利用している Selenium。 リダイレクトやframeが絡むケースでプチはまりしたのでメモ。

以下のようなケース。

1. ページAへアクセス
2. ログイン用ページBへリダイレクト
3. ID, パスワードを送信
4. ログイン成功でページAへリダイレクト

ページBにはframeがあり、frame内にID等の入力ボックスが配置されています。 これに対してSelenium IDEで記録したコマンドは以下。

1. open (ページAのURL)
2. selectFrame (対象のframe)
3. type (id)
4. type (password)
5. clickAndWait (login_button)

実行してみると、'2. selectFrame'で 'element not found'が発生しました。 frameのloadがまだ終わっていないのに操作しようとしているのだろうと考え、waitForPageToLoadやwaitForFrameToLoadを挿入するも効果なし。 リダイレクトがあるとwaitForPageToLoadは使えないっぽい。

結局waitForElementPresentを使って、 目的のelementがページ内に表れるのを待つ方が良さそうです。

1. open (ページAのURL)
2. waitForElementPresent (対象のframe)
3. selectFrame (対象のframe)
4. waitForElementPresent (対象の入力ボックス)
5. type (id)
6. type (password)
7. clickAndWait (login_button)

2ではframe、4ではframe内の入力ボックスの出現をそれぞれ待っています。 これでログインを通過できるようになりました。

loadがちゃんと終わったかどうかを判別するには少しコツがいりそうです。