クリップボードを用いた入力内容の一致チェック方法 【Sikul/Sikulix】

はじめに

Sikuli/Sikulixでは、WEBや業務システムに入力されている値がExcel等に記載した内容と一致するかどうか確認するといったことも実現可能です。

自動化のプログラムは100%確実に動くものではないので、入力されるべきところに値が入力されなかったり、クリックされるべきところがクリックされなかったりします。

入力されるべきところに、入力されているべき値がきちんと入っているか確認することで、誤動作を最小限に防ぐことができます。

ここでは、クリップボードを用いて、WEBや業務システムに入力されている値を取得する方法についてご説明します。

 

 

スポンサーリンク

 

クリップボードを使うための宣言

from java.awt import Toolkit
from java.awt.datatransfer import Clipboard
from java.awt.datatransfer import StringSelection

toolkit = Toolkit.getDefaultToolkit()
clipboard = toolkit.getSystemClipboard()

まずはクリップボードを使うために上記を記載してください。

この記述をすることで、CTRL+Cのコピー操作をした際に、その値をクリップボードから取得するための準備が整います。

 

クリップボードの中身を初期化する

clipboard.setContents(StringSelection(""), None)

クリップボードに既に何かの値が入っている可能性があるので、コピー操作を行う前には常にクリップボードの中身を初期化する記載をしたほうが良いです。

特に複数回同じ処理を繰り返す際に、コピー操作がなんらかの原因でうまく実行されないと、前回コピー操作した際の値がクリップボード内に残っている状態となってしまうためです。

 

WEB上に入力されている値を取得する

click(WEB上の入力箇所をスクリーンショットで選択)
type("a",Key.CTRL)
type("c",Key.CTRL)
text = App.getClipboard()
if text == u"タイトル" :
    popup(u"タイトルでした")
else:
    popup(text)

 

ここでは、あらかじめWEB上の入力項目に「タイトル」と文字入力しておきました。

この値をコピーするとクリップボードにその値が入るので、textという変数に代入し、この変数text内の値が”タイトル”という文字列と一致するかをチェックしています。

一致する場合は”タイトルでした”とポップアップし、一致しない場合はtext内の値をポップアップさせています。

 

応用:WEB上の値とExcelの値が一致するか比較するプログラム

import xlrd#excel読み込みのためのインポート

#クリップボードを使うための宣言------------------------
from java.awt import Toolkit
from java.awt.datatransfer import Clipboard
from java.awt.datatransfer import StringSelection

toolkit = Toolkit.getDefaultToolkit()
clipboard = toolkit.getSystemClipboard()
#---------------------------------------------------

#Excelファイル読み込みの記述---------------------------
filename = popFile()#任意のファイルパス取得のためのダイアログ表示
openfile = xlrd.open_workbook(filename)#上記で選択したExcelファイルを開く
sheet_1 = openfile.sheet_by_index(0)#シート1を指定
#---------------------------------------------------


#クリップボード初期化
clipboard.setContents(StringSelection(""), None)

click(WEB上の入力箇所をスクリーンショットで選択)
type("a",Key.CTRL)#全選択
type("c",Key.CTRL)#コピー
text = App.getClipboard()#変数textへコピーした内容を代入
if text == sheet_1.cell(0,0).value :
    popup(u"タイトルでした")
else:
    popup(text)

 

あらかじめWEB上の入力項目に文字入力しておいた「タイトル」と、

Excelファイルの「A1」セルにあらかじめ入力しておいた「タイトル」が一致するか比較しています。

以上、クリップボードを用いた入力内容の一致チェック方法のご紹介でした。

 

Sikuli関連記事はこちら

 

スポンサーリンク