LoginSignup
1
0

キーボード入力の自動化対応

Posted at

概要

本記事では、キーボード入力を自動化する方法を記載します。
また、簡単なGUIツールのテスト自動化方法も合わせて記載する。

キーボード入力の自動化を行いたい状況

まず、キーボード入力の自動化に関して、どのような場合に使用するかをまとめました。
おそらく、GUIツール関係のテスト時に使用するかなと思います。
→ ユーザの操作をパターン化し、テストに落とし込む。

・GUIツールの自動化テストを作成するとき
・Windowsのショートカットキーを使用するとき

おすすめのライブラリ

今回は、キーボード自動化を行うパッケージを2つ紹介します。
それぞれ特徴が異なるため、使用用途に合わせて選択しましょう。

Robotクラス

keyPress関数を使用することで、キーボードを1度押したことになる。
また、keyRelease関数を記載しなくても、問題なく動作していたが、お作法として「入力 → 解除」はひとまとめに考えたほうが良さそうだ。

import java.awt.Robot

val robot = Robot()

// 常に100ミリ秒の待機時間を設ける
// 目視でのキーボード入力が確認できる(これがないと一瞬で入力されてしまう)
robot.delay(100)

// キーボードの入力
robot.keyPress(KeyEvent.VK_ENTER)
// キーボードの解除
robot.keyRelease(KeyEvent.VK_ENTER)

Sikulixツール

Robotクラスとは異なり、事前に設定したキーボード入力処理を外部プロセスとして呼び出して使用する。また、Robotクラスとの差別化として、画像認識を使用できる。

■手順
①Sikulixツールのダウンロード
②キーボード入力をまとめSikulixフォルダ作成
③呼び出し用のバッチファイル作成
④外部プロセスの呼び出し処理追加

また、使用方法に関しては、ネット上にいくらでも存在するため、本記事では割愛する。
③呼び出し用バッチファイル作成のみ、メモとして残しておく。

cd /d %˜dp0
set filePath=..\sikulixide-2.0.5.jar
set proPath=..\sikulix\○○.sikuli
call java -jar %filePath% -r %proPath%

まとめ

基本的には、Robotクラスを使用するとよい。
Sikulixに関しては、キーボード入力に対応していないボタンの処理があれば、候補に入れてる程度で考えていい。

また、私の場合は出力結果(画像)の比較方法を調べた際に、Sikulixに行き着いた。
結局は、Sikulixの画像認識が安定しなかったため、「javax.imageio.ImageIO ライブラリ」を使用し、ピクセルごとのが画像比較で対応しているが。。。

1
0
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
1
0