かなり困った。新しいPC(Windows10)に変えてから初めて保守しているシステムの改修をしているのだけど
SQLServerに接続できなくなっていた。エラーは下記。
どうやらセキュリティ的な問題で繋げなくなっているらしく(1024bitがうんたら)、回避策を調べても見つけられず、、、
Caused by: javax.net.ssl.SSLException: java.lang.RuntimeException: Could not generate DH keypair
Java7の特定のVersion移行にすれば回避できるけどシステム的にそれをすると結構改修が必要となってしまいそう。
Windowsの特定のパッチを消せばいいという情報もあったけど対象のセキュリティパッチは見当たらずお手上げ。。。
Certified ScrumMasterに認定されました
solrであれこれ苦戦
- これを書いているのはsolr4.7.2利用の際の話です
- solrの管理者画面的なのでqueryを投げる際に、データの_version_を見ると、IEとchromeでデータが違った。そして、select?q=xxxxみたいなので取得すると、この値もまた違う値となった。どうやらブラウザで表示する場合は末尾が丸まっているのか?なんなのか最後が00で終わるようになっている。responseを受け取った時点では783のような末尾で終わる数字なのに、IEだと800になり、chromeだと700になっている。騙された。
- rollbackがうまくいかない。どこかの記事にDBとは違うぜとあったけどそれともちょっと違う気がする。データを更新(add)して、コミットをしないでrollbackを実施した後に、同じデータに対して更新をかけるとversion conflictとなる。versionが00001と予想したけど実際は00002なんだぜみたいな感じ。selectで見てみると00001となっていて、サーバーを再起動してから見てみても00001になっている。add→rollback→commit→addとすると想定していた動きになっているようにみえる。
IEでBasic認証
- IEの場合はwindow().alert()のaccept()が効かない為何か方法がないかとちょっと調べた感じIEの場合はレジストリいじるとか、諦めて手でBasic認証するとかいうのしか見つからなかった。レジストリは嫌だったのでRobotを利用して対応した。困った時にRobotはリーサルウェポンでござる。
//user keyPress(KeyEvent.VK_U); keyRelease(KeyEvent.VK_U); keyPress(KeyEvent.VK_S); keyRelease(KeyEvent.VK_S); keyPress(KeyEvent.VK_E); keyRelease(KeyEvent.VK_E); keyPress(KeyEvent.VK_R); keyRelease(KeyEvent.VK_R); //tabで移動 keyPress(KeyEvent.VK_TAB); keyRelease(KeyEvent.VK_TAB); //pass keyPress(KeyEvent.VK_P); keyRelease(KeyEvent.VK_P); keyPress(KeyEvent.VK_A); keyRelease(KeyEvent.VK_A); keyPress(KeyEvent.VK_S); keyRelease(KeyEvent.VK_S); keyPress(KeyEvent.VK_S); keyRelease(KeyEvent.VK_S); //tabで必要なだけ移動してEnter押す keyPress(KeyEvent.VK_TAB); keyRelease(KeyEvent.VK_TAB); keyPress(KeyEvent.VK_TAB); keyRelease(KeyEvent.VK_TAB); keyPress(KeyEvent.VK_ENTER); keyRelease(KeyEvent.VK_ENTER);
UTFlute使ってみた
- ほとんど設定とかもないしあんまドキュメント読まなくてもテスト実行できるとこまではすぐでよかった。
- 一点はまったのが、ConditionBeanを利用しているとこでNoSuchMethodExceptionが発生
- hogeProjectとhogeDaoProjectがあって、hogeProjectがhogeDaoProjectを参照していて、hogeProject側でUTFlute(0.4.5)を使っていたのだけど、hogeDaoProject側はDBFluteの1.0.5Jを使っていて、UTFluteは1.0.5Fのruntimeを使っているみたいでそっちを参照するようになってしまっていた。setupEfpgというのが有る無しの差異があったみたいだ。とりあえずDao側を変えるのはめんどいのでJを参照するようにして実行。
- ついでに今Seleniumでテストを作成してみているのだけど、結構なんでもできて良い感じ。
- Webにログインして、データを登録、画面のイメージ保存、出力されたPDFの帳票の保存をするとこまではやって、登録されたDBデータの検証もやりつつ今度はPDFの帳票をどうにか検証できないかみているところ。少し調べたところPDFBoxというのがあるけど使えるかまだ見れていない。DiffPDFというのを軽く試したけど思ったようにはいかなかった。お金かけていいならAdobeのがあるみたいだけど。
- PDFの保存は別ウィンドウでPDFを開いたのだけどWebDriverでウィンドウをPDF側のに切り替えて、なんとかしようとしたけどhtmlの要素がうまくとれなくて仕方ないからRobotを使って保存のショートカットをキーボード操作でするようにした。
keyPress(KeyEvent.VK_CONTROL); keyPress(KeyEvent.VK_SHIFT); keyPress(KeyEvent.VK_S); //ここでちょっとwait keyRelease(KeyEvent.VK_CONTROL); keyRelease(KeyEvent.VK_SHIFT); keyRelease(KeyEvent.VK_S); //ここでちょっとwait keyPress(KeyEvent.VK_ALT); keyPress(KeyEvent.VK_S); //ここでちょっとwait keyRelease(KeyEvent.VK_ALT); keyRelease(KeyEvent.VK_S);
こんな感じ。
で、PDFを開いていたウィンドウはもういらないので同じように
keyPress(KeyEvent.VK_ALT); keyPress(KeyEvent.VK_F4); keyRelease(KeyEvent.VK_ALT); keyRelease(KeyEvent.VK_F4);
- その他Tipsメモ
- Seleniumでよくやらかすのが、画面の表示倍率を100%にしてなくてエラーになるやつ。。。
- 画面のイメージの保存でうまく全体を残せない時
- 画面をスクロールさせてキャプチャした。こんな感じ。
JavascriptExecutor je = (JavascriptExecutor) getDriver(); je.executeScript("scroll(0,0);"); //キャプチャ実施 je.executeScript("scroll(0,1000);"); //キャプチャ実施
- InternetExplorerDriverが64bitの使うと動きがありえないくらい遅い。32bitを使うと快適