はてなブックマーク - Selenium IDEでinnerHTMLを操作する
    このエントリーをはてなブックマークに追加

    こんにちは。フクダリナです。久しぶりすぎて、いろいろ忘れてしまいました。
    Fusicでは、テスターと、時々マニュアル作成、趣味とまでいきませんが、Fusic内の写真を撮っています。
    先日行った上海社員研修では、2200枚超の写真を撮りましたが、面白いと思う写真がとれなくて、写真の難しさを痛感しています。

    Selenium IDEでテスト

    もうだいぶ前になりますが、Selenium IDEでスクリーンショットをとりながらテストするというのを書かせていただきました。

    今回もSelenium IDEについてです。

    Selenium IDEで録音できることの限界

    Selenium IDEの録音機能を使えば、HTMLやJavascriptの知識がなくても、テストケースを簡単に作ることが可能です。
    しかし、録音にも限界というものがあり、innerHTMLや、Flashプレーヤーの操作などはできません。

    Selenium IDEでinnerHTMLを操作したい

    録音機能を使っては操作できませんが、Seleniumの「getEval」コマンドを使えば、innerHTMLの操作は可能です。
    innerHTMLのテキストエリアの要素をとるには
    this.page().getDocument().getElementById(“content_ifr”).
    contentWindow.document.getElementById('tinymce').innerHTML = 'hoge';
    というので可能です。

    ということで、ここからソース

    <!--サイトを開く-->
    <tr>
    	<td>open</td>
    	<td>http://www.tinymce.com/tryit/full.php</td>
    	<td></td>
    </tr>
    <!--innerHTMLの部分に文字を入れる-->
    <tr>
    	<td>getEval</td>
    	<td>this.page().getDocument().getElementById("content_ifr").contentWindow.document.getElementById(&#039;tinymce&#039;).innerHTML = &#039;hoge&#039;;</td>
    	<td></td>
    </tr>

    サンプルにwww.tinymce.com/tryit/full.php
    を使ってみます。

    さっそく実行。
    実行結果

    ・・・あっさりできてしまいました。

    storeコマンドを使って、入力しやすくする

    これだけではアレなので。
    このコマンドは、「対象」と呼ばれる部分に入力値も入れることになるので、修正がしづらいです。
    hogeの部分を書き換えるのがめんどくさい

    そこで、以前もでてきたstoreコマンドを使って、書き換えます。

    storeコマンドでinput_dataという変数を宣言し、入力文字を設定します。
    先ほどのinnerHTMLにセットしていた hogeの部分を${input_data}と変数定義することで、storeでセットした文字がセットできます。

    ソースはこちら

    <!--サイトを開く-->
    <tr>
    	<td>open</td>
    	<td>http://www.tinymce.com/tryit/full.php</td>
    	<td></td>
    </tr>
    <!--変数を設定-->
    <tr>
    	<td>store</td>
    	<td>ここに入力値をいれます。</td>
    	<td>input_data</td>
    </tr>
    <!--innerHTMLの部分に文字を入れる-->
    <tr>
    	<td>getEval</td>
    	<td>this.page().getDocument().getElementById("content_ifr").contentWindow.document.getElementById(&#039;tinymce&#039;).innerHTML = &#039;${input_data}&#039;;</td>
    	<td></td>
    </tr>

    変更

    これで、storeコマンドの対象を変更するだけで入力値を簡単に変更できます。
    入力が簡単になった

    おわりに

    Selenium IDEはプログラマーでなくても、簡単にテストの自動化を行ってくれるツールですが、使い方をマスターすると、より複雑な操作も可能になります。
    まだまだ勉強中ですので、次回はWYSIWYGエディタの完全操作や、Flash Playerを操作できるようになりたいと思います。

      はてなブックマーク - オレオレ framework の作り方
      このエントリーをはてなブックマークに追加

      Fusic 河野です。

      GW 始まりましたね。みなさん、楽しんでますか?
      来る5月19日(土)に Future Sync vol.2 というイベントをします。
      これは、プログラマー・デザイナー・クリエイター・企画・マーケティング・学生など、
      様々な人たちが IT の未来を同期するために開催される、トークイベントです。
      詳細は、ココとかココにも書いてますので、ご興味を持たれた方が居られましたら
      ぜひご参加をお願い致します!
      (学生さんのみなさん、無料ですよ~)

      さて、本題。
      今回は iphone での framework の作り方についてです。
      iphone アプリをいくつか作成していると色々と独自のライブラリなどが
      溜まってくるかと思います。
      それらのオレオレライブラリを framework としてまとめ、今後の開発にも
      直ぐに活用できるようにしておけば、きっと楽になるのではないでしょうか。
      それでは早速いきましょー!!
      (今回は実際のコードではなく、画像が多いです。ご容赦を!)

      準備

       今回は kstenerud さんの iOS-Universal-Framework というツールを使用します。
       便利です。オススメです!
       リンク先の README を見てたら大体の事は分かると思います。

       git clone で落としてきてインストールの作業を行います。

      $ git clone git://github.com/kstenerud/iOS-Universal-Framework.git
      $ cd iOS-Universal-Framework/Real Framework
      $ ./install.sh

       因みにアンインストールする場合には、同ディレクトリにある uninstall.sh を叩きます。

      フレームワーク側の作成

       
       ”準備”を行った後、xcode を開くと新しく “Static iOS Framework”という
       テンプレートが追加されてますので、それを選んで新規にプロジェクトを作成します。

       
       今回は “HelloWorldFramework” という名前で作成しました。
       ARC などのオプションはお好みで設定してください。
       (サンプルでは ARC をオンにしてます)

       
       プロジェクト内に “HelloWorld” というクラスを作成します。

       それぞれのファイルには以下のコードを書いておきます。
       UIAlertView で “hello, world!” と表示する簡単なものです。

      HelloWorld.h

      #import <Foundation/Foundation.h>
       
      @interface HelloWorld : NSObject
       
      - (void)sayHelloWorld;
       
      @end

      HelloWorld.m

      #import "HelloWorld.h"
       
      #import <UIKit/UIKit.h>
       
      @implementation HelloWorld
       
      - (void)sayHelloWorld
      {
          UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"alert!"
                                                              message:@"hello, world!" 
                                                             delegate:nil 
                                                    cancelButtonTitle:@"OK" 
                                                    otherButtonTitles:nil];
          [alertView show];    
      }
       
      @end

       
       ビルドが成功すると “Product” のところに “HelloWorldFramework.framework” が
       作成されてます。
       そして、その “HelloWorldFramework.framework” を選択し、右クリックして、
       Finder で表示します。

       
       
       Finder で表示したところです。
       ここにある “HelloWorldFramework.framework” というディレクトリが
       今回使うフレームワークです。
       これをどこかわかりディレクトリにコピーしておきます。

       お疲れ様でした!
       これで、一旦はオレオレフレームワークの作成が終わりました。
       ツールのおかげでほんとに楽ですよね!!

      アプリケーション側での利用

       
       アプリにて、先程の “HelloWorldFramework.framework” を
       組み込んでいきます。
       適当に新規プロジェクトでアプリを作成します。
       ”UseFramework” としています。

       
       
       
       新規作成したアプリに作成したフレームワークを追加します。
       解りやすいところにコピーした “HelloWorldFramework.framework” を
       選択して追加します。

       
       アプリにボタンを追加して、関数を追加してボタンが押下されると
       関数が呼ばれるようにします。
       今回、say というメソッドを作成し呼び出すようにしました。

      #import "HelloWorldFramework/HelloWorld.h"
       
      ...(中略)
       
      - (IBAction)say:(id)sender
      {
          HelloWorld *hello = [[HelloWorld alloc] init];
          [hello sayHelloWorld];
      }

       注意点として、フレームワーク内のヘッダを呼び出す場合は、
       #import “HelloWorldFramework/HelloWorld.h” のように
       ”フレームワーク名/呼び出したいヘッダ”
       のように記載します。

       
       プロジェクトを実行し、ボタンを押下すると無事に
       ”hello, world!” が表示されました!!

      おわりに

       ツールのおかげでほんとに楽だったと思います。
       実際に自分で1から作ろうとするとユニバーサル化含め
       メンドクサイ事がいっぱいなのですが、ほんとに楽です。
       これで気軽にフレームワークが作成できますね!

       ぜひ、みなさんの開発ライフにご活用ください!

        はてなブックマーク - インフラ勉強会@福岡でWakameについて話してきました
        このエントリーをはてなブックマークに追加

        Fusic 平田です。
        インフラ勉強会@福岡に参加してきました。
        で、行くなら喋ろうってことでWakameのお話。

        ※ Ustの録画をしそこねておりました。大変申し訳ありません。。。
        補足情報は、以下のような感じです。
        ・OpenFlow対応が追加されている
        # 参考: www.slideshare.net/yasuhiro_yamazaki/openflow-in-iaas-wakame
        ・対応ハイパーバイザにESXiとOpenVZが追加された
        ・Gentooへのインストールスクリプトが追加された

        Wakameいいよーいいよーってのをもっとわかりやすく説明するために、いろいろ実験中です。
        これについてはまた別途エントリ書くようにします。

        他の方の発表は以下の通り。

        Spring_MTさん: MySQL Casual Talks Vol.3の話、など
        # 参考: spring-mt.tumblr.com/post/21638089137/mysql-casual-talks-vol-3-lt
        参加しましたって話と、それに絡んでMySQLやRailsの話。
        いろいろ勉強会やりたい!と画策してらっしゃるようで、楽しみにしております。

        take_3さん: 東京こわいいろいろ勉強会に参加した話などなど
        特に場が騒然としたのが、x86/x64最適化勉強会の話。
        最近のCPUだと、慣例どおりのコード書いてたら分岐予測でコスト浪費するんだよってなにそれこわいすごいってな雰囲気でした。
        あとは、「などなど」とまとめましたが多方面にわたるいろいろなお話。

        あとはバックアップの話とか冗長化の話とか、あれこれいろいろ話してそのまま懇親会に移動。
        技術の話やらそうでもない話やらで大いに盛り上がりました。Excelは言語だよね、とか。
        次回もぜひ参加させていただきたいですね。