SikuliからMongoDBにアクセスする。
画像認識でPC操作の自動化ができるSikuli(正式にはSikuliXかもしれませんが、ここではSikuliで統一します)を、GUIテストの自動化なんかに使ってます。
SikuliのソースはPython(実態はJython)で書けるんで、JUnitとか使ってJenkinsから実行したりすれば基本的には満足なんですが、画像認識の弱点として予期せぬ表示状態になったりするとテストが失敗することがあります。
(分かりやすいところでは、勝手に表示されるWindows10への更新を促すダイアログとかね!)
なので、テストは画面イメージとか情報を多めに残しつつ動くようにしていますが、このログの扱いに困ります。
そこで、そういったログをMongoDBに登録する方法を試したいと思います。
ソフト等 | バージョン | 備考 |
---|---|---|
Windows 10 Pro | 64ビット | |
Java 8 | update 71 | |
sikuli | 1.1.1 | 20151126.001204-18(Jython2.7.0) |
Java MongoDB Driver | 3.0.4 |
Sikuliのインストール
Sikuliの日本語情報はあまり多くないのと、最近のJava8に入れた情報はないようなので、一応画面も残しておきます。
ここからサポートされてるバージョンが落とせますが、今回はnightlyから最新のsikulixsetup~.jarを落としてC:\sikuliXに配置し、実行しました。
Setupダイアログでは、1、2、3にチェックし、「Setup Now」。
(今回はOCR機能使わないから、3は要らないはずですが)
以後いくつかダイアログが出るので、全部「はい」で。
インストールが終わると、c:\sikuliXの中にrunsikulix.cmdが出来てますので、これを実行すると次のようにSikuliのIDEが立ち上がります。
SikuliでJava MongoDB Driverを使う。
SikuliからMongoDBにつなぐ公式ドライバはありませんが、Sikuliの実態はJythonなのでJava MongoDB Driverで試してみます。
(使ったのは「mongo-java-driver」の方。「mongodb-driver」との違いは良く分かりません)
C:\mongoDB\mongo-java-driverフォルダに、落としたmongo-java-driver-3.0.4.jarを配置して、動作確認として簡単な検索を行ってみます。
load("C:\mongoDB\mongo-java-driver\mongo-java-driver-3.0.4.jar")
import com.mongodb.MongoClient;
cli = com.mongodb.MongoClient( "s2016tp4" );
db = cli.getDB( "logs" );
coll = db.getCollection("os");
print("Count = %i" % coll.getCount())
d = coll.findOne();
print("TimeStamp = %s" % d.get('TimeStamp'))
print("ComputerName = %s" % d.get('ComputerName'))
赤枠部にコレクションのカウントや検索したデータが表示されました。
(つないでいるデータは、PowerShellからMongoDBにアクセスする。で作ったPowerShellで登録しているデータです。)
接続出来ることが確認できましたが、長くなったので今回はここまで。
登録(特に画像)はまた今度。
参考
Sikuliについては日本語情報があまりなく、以下の情報がこれまでの参考になりましたので挙げさせていただきます。