最近Seleniumとphantomjsが怪しい。
2.27からごちょごちょやっていて、2.28になって、こんなことを言い出した。
「Added the PhantomJS bindings to the release」
DesiredCapabilities caps = new DesiredCapabilities();
caps.setCapability(PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY, "/usr/local/bin/phantomjs");
WebDriver driver = new PhantomJSDriver(caps);
driver.get("http://gugurekasu.blogspot.jp/");
System.out.println("TITLE : " + driver.getTitle());
System.out.println("URL : " + driver.getCurrentUrl());
こんな感じで使える。
http://cdn.ivandemarino.me/slides/speed_up_selenium_with_phantomjs/index.html#title
上記に書いているが、画面を表示しない分、速度が速くなる。
ただしjsのエンジンがwebkit固定なので、WindowsFireFoxなどとはお庭が違う。
そういう意味では、JsTestDriverのほうが起動ブラウザを選択できる分優秀。
残念。
2013年1月5日土曜日
2012年11月24日土曜日
seleniumの2.26になってかわったこと その2
事前に検証することは大事である。ちゃんとやっておけば
「ワンセグ見れる5万のタブレットを買ったものの、
お風呂までワンセグの電波が届かない。
こんなことならNEXUS買っときゃよかった」
なんてことにはならない。
2.26で出来るようになったことの続き
1.Platformクラスのwindows8対応
OSの情報を取得できるPlatformクラスがWindows8に対応した。
[使い方]
for(String inf:Platform.getCurrent().getPartOfOsName()){
System.out.println(inf);
}
Windows8環境上記メソッドを実行すると
Windows Server 2012
windows 8
win8
って出力される
2.プロキシ自動設定、https、socksプロキシに対応
[使い方]
Proxy proxy = new Proxy();
FirefoxProfile profile = new FirefoxProfile();
//自動設定の場合
proxy.setProxyAutoconfigUrl("http://192.168.0.10/proxy.pac");
//socksの場合
proxy.setSocksProxy("hostname.com:1234")
.setSocksUsername("user")
.setSocksPassword("pass");
//httpsの場合
proxy.setHttpsProxy("hostname:1234");
profile.setProxyPreferences(proxy);
WebDriver driver = new FirefoxDriver(profile);
3.Colorクラスでカラーを文字で指定可能に
[使い方]
Color clr = Color.fromString("SILVER");
System.out.println(clr.asRgb());
指定できる文字はColorsクラスが保持している
その他
・driverのCapabilitiesを使用するコンストラクタのDeprecatedが消えた、なぜに
seleniumの2.26になってかわったこと その1
3DSドラゴンクエスト7に求めること
・職業レベルがMAXになって、早く転職したいのに、急に世界から隔離されて、
ダーマ神殿に行けなくなるタイミングがある。
・マリベルがいい感じに賢者に転職できた頃に強制離脱するシナオリオ
・操作キャラクターが5人いるのに、つれて歩けるのが4人まで。
中途半端なので一人減らすか、馬車などの一緒に連れていく方法を増やしてほしい。
・特技『怒涛の羊』の威力はそのままで。
それはさておき、去年まで2回/月だったseleniumのバージョンアップが
2、3ヶ月に1回になった。
ただし、いまだにIE対応は躓くところが多いのか、IEDriverのみ
バージョンアップを繰り返すことがおおい。
コツとしては、新バージョンのselenium動作検証あと、1、2週間まって、
IEDriverの世間での安定性を確認すればいいかなと。
2.26で出来るようになったことを一通り。
1.Architectureクラス
新規追加クラス。クライアントのCPU情報などを取得してくれる。
[使い方]
String myArch = Architecture.getCurrent().toString();
System.out.println(myArch);//x86って出力される。
2.kyesクラスがunicodeに対応した
unicodeを指定して、キーオブジェクトを取得することが出来るようになった。
[使い方]
①Keys.getKeyFromUnicode('\uE008');
②Keys.getKeyFromUnicode(Keys.SHIFT.charAt(0));
①と②は同じキーオブジェクトを返却する。
3.ActionsクラスcontextClickメソッド(引数無しバージョン)追加
Actions.contextClick()で、その場で右クリックしてくれるようになった。
以前からも Actions.contextClick(null)で同じことは出来たけれども
その他
・DatabaseStorageクラスがDeprecatedアノテーションくらった
(使ってる人、少ないと思うけど、、)
・IEから useLegacyServerオプションが完全に撤去された。
これからはIEDriverを使いましょう
・毎度のログ周りの大きな変更
・毎度のsafari周りの大きな変更
続きはまた今度。
2012年11月4日日曜日
待ったことをアピールしてみる
フランスっていいよね。
3ヶ月ぶりにseleniumがVerUpしたので、久々に燃料投下。
ざっと見た感じ2.25から2.26への主な変更点は
1.共通ライブラリが一気に更新(operadriverとか)
2.IE、FireFoxでの安定化(FireFox15、16のnativeイベント対応)
3.プロキシurl自動設定、https、socksプロキシに対応
4.ログまわりの大きな変更
5.kyesクラスのunicode対応
6.名前からcolorクラスを生成可能に
7.safari操作系統がっつり変更
という感じ。
結論から言えば、あげるといいと思うよというところ。
IEでのhover不具合なども直っており、1と2だけでも結構なお得だとおもったり。
詳細な実装方法とかはまた今度。
3ヶ月ぶりにseleniumがVerUpしたので、久々に燃料投下。
ざっと見た感じ2.25から2.26への主な変更点は
1.共通ライブラリが一気に更新(operadriverとか)
2.IE、FireFoxでの安定化(FireFox15、16のnativeイベント対応)
3.プロキシurl自動設定、https、socksプロキシに対応
4.ログまわりの大きな変更
5.kyesクラスのunicode対応
6.名前からcolorクラスを生成可能に
7.safari操作系統がっつり変更
という感じ。
結論から言えば、あげるといいと思うよというところ。
IEでのhover不具合なども直っており、1と2だけでも結構なお得だとおもったり。
詳細な実装方法とかはまた今度。
2012年9月10日月曜日
DWRのオプションで速度改善
DWRの仕様を確認するために、公式サイトを見てみる。
内容をかいつまむと
・メーリスみろよ
・ヘルプみろよ
・トラブルシューティングみろよ
って書いてある。ようは自分で調べろってことで。
多重アクセス時の速度改善に役に立ちそうな情報としてはweb.xmlのオプションで
・maxWaitingThreads(同時ブラウザ最大接続数:デフォルト100)
・maxHitsPerSecond(同時処理数:デフォルト40)
・scriptCompressed(dwrに関するjsの圧縮:デフォルトfalse)
このあたりを変更すればいいかもね。
内容をかいつまむと
・メーリスみろよ
・ヘルプみろよ
・トラブルシューティングみろよ
って書いてある。ようは自分で調べろってことで。
多重アクセス時の速度改善に役に立ちそうな情報としてはweb.xmlのオプションで
・maxWaitingThreads(同時ブラウザ最大接続数:デフォルト100)
・maxHitsPerSecond(同時処理数:デフォルト40)
・scriptCompressed(dwrに関するjsの圧縮:デフォルトfalse)
このあたりを変更すればいいかもね。
2012年8月26日日曜日
JsTestDriverでDOM操作を行うための妄想(その2)
妄想に取り付かれると、無敵のキラ様に殺されたりする。
さっきの続き。
JsTestDriverでDOM操作のテストを実行するには
・DOM API(docment.~とかJQueryのものとか)をつかう。
・ 【/*:DOC foo = <div><p>foo</p></div>*/】って擬似DOMにアクセスする
の2パターン存在する。
その他のjs単体テストモジュールと違い、静的なhtmlファイルを参照したりすることは
できない(あくまで現時点では)。
オプションでいかにも静的なhtmlを参照できるかのような物が存在するが、
あれは非同期通信の時などに参照するためのものであって、決して
DOMテスト用ではない。引っかからないように。
まだきちんと試せたわけではないが、後者はthisの扱いがちょっとおかしい。
理由として、jsでthisといえば、
・イベントが発生している時はその発生もとのコンポーネント
・そうでないときは自分自身(クラスとか)
だったりするが、JsTestDriver的にはthisは【:DOC foo】で指定した要素を指してしまう
ので、挙動がおかしかったりする。
そんな感じで怖いから、前者を使いたい。
とはいうものの、今度はそのDOM APIがめんどくさくなってくる。
解決方法としては、seleniumと連携して、htmlを取得し、そのhtmlを解析してDOM APIに置換。
testjs自体に結果をインサートして使用するとかになるのかな。
そんなめんどくさいことしなきゃ
さっきの続き。
JsTestDriverでDOM操作のテストを実行するには
・DOM API(docment.~とかJQueryのものとか)をつかう。
・ 【/*:DOC foo = <div><p>foo</p></div>*/】って擬似DOMにアクセスする
の2パターン存在する。
その他のjs単体テストモジュールと違い、静的なhtmlファイルを参照したりすることは
できない(あくまで現時点では)。
オプションでいかにも静的なhtmlを参照できるかのような物が存在するが、
あれは非同期通信の時などに参照するためのものであって、決して
DOMテスト用ではない。引っかからないように。
まだきちんと試せたわけではないが、後者はthisの扱いがちょっとおかしい。
理由として、jsでthisといえば、
・イベントが発生している時はその発生もとのコンポーネント
・そうでないときは自分自身(クラスとか)
だったりするが、JsTestDriver的にはthisは【:DOC foo】で指定した要素を指してしまう
ので、挙動がおかしかったりする。
そんな感じで怖いから、前者を使いたい。
とはいうものの、今度はそのDOM APIがめんどくさくなってくる。
解決方法としては、seleniumと連携して、htmlを取得し、そのhtmlを解析してDOM APIに置換。
testjs自体に結果をインサートして使用するとかになるのかな。
そんなめんどくさいことしなきゃ
JsTestDriverでDOM操作を行うための妄想(その1)
仕事(がうまくいくためにどうすればいいかを妄想するの)が好き。
Seleniumを使って自動テストをするのはいいけれど、世の中うまい話には裏がある。
ネックとしては
・実行時間
・環境の構築
この2点。
どうしても実際の通信、およびブラウザ動作を行うSeleniumは実行するのに
時間がかかるし、DBやHTTPサーバーといった環境も含めて
運用を考えないといけないから手間もかかる。
この2点をクリアできるのが単体テストであり、有名どころとしては
javaでいうとJUnit。javascriptでいうとJsTestDriverだったりする。
理想的な住み分けとしては
・カバレッジやデグレ防止のためのテストケースを増やしたりしたりするには
出来る限り単体テストで。
・単体テストで無理な部分(業務的な処理フロー等)は画面テストで行い、
実行時間を短くする
のがいいのかなと現時点では思っている。
で、そこで今度問題になってくるのが単体テストにおける擬似操作データ、
および擬似通信になってくる。
画面テストにおいては、実際にブラウザも立ち上げ、データベースや
アプリケーションサーバーも存在するから、環境さえ用意してしまえば、
「どのように動かすか」を設定してあげればいいだけ。
だけど単体テストはそうも行かない。あくまで「単体」だから、いわゆるMock的な物が
必要になってくる。
具体的な物の一つに、JsTestDriverでいうところのDOMの操作を行うテストが
当てはまる。
Seleniumを使って自動テストをするのはいいけれど、世の中うまい話には裏がある。
ネックとしては
・実行時間
・環境の構築
この2点。
どうしても実際の通信、およびブラウザ動作を行うSeleniumは実行するのに
時間がかかるし、DBやHTTPサーバーといった環境も含めて
運用を考えないといけないから手間もかかる。
この2点をクリアできるのが単体テストであり、有名どころとしては
javaでいうとJUnit。javascriptでいうとJsTestDriverだったりする。
理想的な住み分けとしては
・カバレッジやデグレ防止のためのテストケースを増やしたりしたりするには
出来る限り単体テストで。
・単体テストで無理な部分(業務的な処理フロー等)は画面テストで行い、
実行時間を短くする
のがいいのかなと現時点では思っている。
で、そこで今度問題になってくるのが単体テストにおける擬似操作データ、
および擬似通信になってくる。
画面テストにおいては、実際にブラウザも立ち上げ、データベースや
アプリケーションサーバーも存在するから、環境さえ用意してしまえば、
「どのように動かすか」を設定してあげればいいだけ。
だけど単体テストはそうも行かない。あくまで「単体」だから、いわゆるMock的な物が
必要になってくる。
具体的な物の一つに、JsTestDriverでいうところのDOMの操作を行うテストが
当てはまる。
登録:
投稿 (Atom)



.jpg)
