2013年10月15日火曜日

Selenium いろいろ




ローカルから直接うごかす例が多いけど、リモートでのテスト実行の設定例が少なかったので、何となくメモ

http://www.ibm.com/developerworks/jp/web/library/wa-selenium2/



リモートとは関係がないけど、User AgentもFirefoxなら変えられそう。
http://masayuki5160.hatenablog.com/entry/2013/08/25/185253

ファイルをダウンロードをする時の参考
http://design-ambience.com/wordpress/?p=114

詳しそう
http://www.storklab.com/seleniumhq.org/docs/03_webdriver.html

2013年6月2日日曜日

Seleniumでのテスト自動化

とても参考になるので、めも

http://d.hatena.ne.jp/unageanu/20111031/1320016739

2013年4月15日月曜日

リバースプロキシ配下でJoomla2.5を使おうとしたら、管理画面は使えたけど、フロント画面のほうではヘッダー部の先頭に<base href=""/>が出力されていて、問題があった。
出力しないようにしたかったので、とりえずメモ。


標準のテンプレートでは、最初の方に

<jdoc:include type="head" />

という記載があり、この中で<base href=""/>が出力されているっぽい。


 Joomla2.5がインストールされているディレクトリ/libraries/joomla/document/html/renderer
の配下にあるhead.phpで生成していて、65行目あたりの以下の処理をまとめてコメントアウトすると出力されなくなる。


$base = $document->getBase();
if (!empty($base))
{
          $buffer .= $tab . '<base href="' . $document->getBase() . '" />' . $lnEnd;
}
一応動いているので、問題ないとおもう。

2013年2月27日水曜日

DOMに対してい任意イベントを発生させる(タッチディバイスの場合)

タッチディバイスの場合、GoogleMapAPIで地図を表示している部分では、MouseEventのclickではイベントをキャッチしてもらえないようだったので、専用にタッチイベントを起こしてみた。

TouchEventはDOMでは規定されていないので、プラットフォーム別に初期化の仕方が違うみたいなので、とりあえず手持ちで確認できたAndroidとiOSむけだけ。
PC向けのブラウザでは動かない。


イベントとしては
touchstart
touchmove
touchend
の3つがあるみたい。
タッチディバイスによっては、マルチタッチをサポートしているものがあるので、タッチイベントは配列で指定することになる。

GoogleMapAPIで地図のクリックイベントとして登録した処理は、はtouchstartだけでは実行してくれなかったので、touchstartの後にすぐにtouchendを発行してみたらちゃんと処理された。


-------ここから-------
var evt=document.createEvent('TouchEvent');
var event2=document.createEvent('TouchEvent');
var touch = document.createTouch(window,elements, 0, x, y, x, y);
var touches = document.createTouchList(touch);
                   
[Androidの場合]

evt.initTouchEvent(touches, touches, touches, 'touchstart', window, x,y, x, y, false, false, false, false);
event2.initTouchEvent(touches, touches, touches, 'touchend', window, x,y, x, y, false, false, false, false);

[iOSの場合]
 evt.initTouchEvent('touchstart', true, true, window, 0, x,y,x, y, false, false, false, false, touches, touches, touches,1, 0);
 event2.initTouchEvent('touchend', true, true, window, 0, x,y,x, y, false, false, false, false, touches, touches, touches,1, 0);


elements.dispatchEvent( evt );
elements.dispatchEvent( event2 );
-------ここまで-------

2013年2月24日日曜日

DOMに対してい任意イベントを発生させる

DOM内の要素に対してイベントを任意に発生させることができることが分かったので、とりあえずメモ。

このあたりが参考になる。

createEvent()を使って、イベントをオブジェクトを作り、必要なパラメータを設定する。
createEvent()の引数はイベントの修理

以下は、Mouseでのクリックイベントを発生発生させているところ。

var evt = document.createEvent( "MouseEvents" );
evt.initMouseEvent("click", true, true, window, 0, 0,0, 250, 250,  false, false, false, false, 0, null);

dispacthEvent()を使って他のDOM要素に対してイベントを割り振ることができる。


スマートフォンやタブレットの場合だと、clickイベントだとうまく動かない。
Touch系のイベントを指定しなくちゃいけないんだけど、DomLevel2では規定されいなので、どうするか・・・。
あとで調べる予定。

HTML上任意座標のdomエレメントを取得する

elementFromPoint()を使うと任意座標上に表示されている、要素を取得できることがわかったので、とりあえずメモ

el=document.elementFromPoint( x , y );


末端のDOM要素が取得できるみたい。

2013年2月13日水曜日

Ext.grid.Panelで縦スクロールを制御

Ext.grid.Panelで縦スクロールを制御のした方を調べたので、とりあえずメモ。

方法としては2つ あるみたい。


a) Ext.core.ElementのscrollIntoView()を利用

 Ext.Element(grid.getView().getNode(インデックス)).scrollIntoView();

b)Ext.grid.ViewのfocusRow()を利用
 grid.getView().focusRow(インデックス);



b)の方は、すでに画面のどこかに表示している場合は、とくに変化がないので、任意行をGridの一番上に持ってきたい場合は、一度最終行を表示させた後で、表示したい行を指定するといいかも。


Gridの初期表示時に任意行を先頭に表示させる場合は、gridパネルのlistenersのイベントを登録して、その中で、上記の指定をすればよさそう。

色々と試したけど、afterlayoutイベントではうまく行った。
ただgridパネルを最初に表示させる際に、2度afterlayoutイベントがコールされてる動きをしていたので、工夫が必要かも。
a)で処理させようとすると、動作上は動いているように見えるけど、なぜか2回目のところで、エラーになってしまう。




2013年1月5日土曜日

Zend_DbでのDB接続管理

PDOドライバを使う場合、

   PDO::ATTR_PERSISTENT=>true

を設定することで、DBコネクションがキャッシュされて、再利用ができる

http://php.net/manual/ja/pdo.connections.php




Zend_Dbを使う場合には、username,passwordと同じレベルで、persistentにtrueを指定することで、同様に設定になる。

Zend Frameworkでconifig.iniに以下のように指定すると、利用できるようになる


----ここから----
resources.db.params.username=DB接続ユーザ名
resources.db.params.password=DB接続パスワード
resources.db.params.persistent=true
----ここまで----


http://framework.zend.com/manual/1.12/ja/zend.db.adapter.html

に書いてあったけど、ページの最後のほうにnoteで書いてあったから見過ごしてた。


MySQLでコネクション数をみるとpersistent=trueとすることで、いくつかのコネクションが張られっぱなしになることを確認。
ただ、PDO側でコネクション数上限を指定するところが見当たらないので、DB側のMAX分だけコネクションが張られっぱなしになる可能性もあるかも。
だれか教えてほしい。