0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

(テスト自動化) 画像認識に使う画像を入れ子にする

0
Last updated at Posted at 2020-12-28

背景

社内のシステム開発者向けにテスト自動化システムを構築・運用している。(SikuliX + Testablish)
その中で日常的に出てくる技術課題ややりたいことをメモ書き。

Sikuliが楽しい!

課題

大抵のRPAツールはそうだが、操作シナリオは1つのファイルで閉じてしまう。
それの何が気になるのかというと、シナリオの中に画像を含んでしまっているのを残念に感じる。
画像はちょっとした仕様変更などで変わるので、画像だけを簡単に差し替えられるようなつくりにしておくのが、肝要ではないかと思う。
というわけで、Sikuliの操作シナリオ中の画像を別建てしたWebServiceから引っ張ってこられるような作りを目指してみた。

対応

Sikuliの操作シナリオにおける画像ファイル部分はWebServiceから引っ張ってくる。

目的

各システムでファイルアップロードやダウンロード、エクセル操作くらいの単シナリオであれば、画像差し替えで使い回せるようにしたい。

内容

実装に当たり1つ課題が出た。
それはsikulixがpythonと思いきや、jythonで実装する必要がある点である。
jythonはJVM上で動作するpython言語で、コーディング量の少なさやシンプルさが売りらしいが、WEB上の情報量が少ないのがネックに感じる。
https://www.jython.org/

ただ、新しく覚える言語(まぁほぼpythonとjavaの合いの子だけど)はワクワクするのでレッツトライ。

以下実装で検証し、成功。

-----------------------
import java.net.HttpURLConnection
import java.net.URL
import java.io.BufferedReader
import java.io.InputStreamReader
import java.lang.StringBuffer
import json
import base64
import datetime

URL = java.net.URL
url = 'RESTURL'
obj = URL(url)
con = obj.openConnection()
con.setRequestMethod("GET")
responseCode = con.getResponseCode()

BufferedReader = java.io.BufferedReader
InputStreamReader = java.io.InputStreamReader

buf = BufferedReader(InputStreamReader(con.getInputStream()))
response = buf.readLine()
buf.close();

dir = os.getcwd()

#画像はBase64でasciiにしておいて、REST戻り値はjsonファイルを指定
#jython上でデコードする
downloadData = json.loads(response)
fileName = downloadData['fileName']
contentType = downloadData['contentType']
contentDataAscii = downloadData['contentData']
now = datetime.datetime.now().strftime("%Y%m%d%H%M%S")
contentData = base64.b64decode(contentDataAscii)
saveFileName = now + fileName
saveFilePath = os.path.join(dir, saveFileName)
with open(saveFilePath, 'wb') as saveFile:
 saveFile.write(contentData)

↓↓画像認識処理↓↓
-----------------------

結果 or 気付いた点

python上でjavaライブラリをimportし、ゴリゴリとjavaを記述するイメージ。
import指定形式、インスタンス生成方法さえ分かれば後はスムーズ。

結論

これで操作シナリオの共通化が進む!

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?