【UFT】UFTの小技 ～キー操作～

テスト自動化ツールである、UFT(Unified Functional Testing)

今回はUFTでのキー操作についてまとめてみたいと思います。

# キー操作とは
UFT実行時にキーボードの操作を行い時が出てくるかと思います。
例えば、自動コードを実装中に「この文字列をコピーしたいなぁ」
と思ったとき、手動なら[ Ctrl]  + [ C ] でコピーしますよね？

これをUFTはコードを書くことで実現することが出来ます。

# 操作一覧
使い方としては３パターンあります。

```VB:基本的な使い方
'Object：操作対象のオブジェクト
'Enterキーを押下するコード

'１：Type
Object.Type micReturn 'Enterキーを押下

'２：PressKey
Object.PressKey micReturn

'３：SendKeys
Set WshShell = CreateObject("WScript.Shell")
WshShell.Sendkey "{ENTER}"
Set WshShell = Nothing

```

## Alt系
|#|Keyコード|説明|使用例(Type)|
|---|---|---|---|
|1|micAltDwn|Altキーを押下|object.Type micAltDwn|
|2|micAltUp|Altキーを離す|object.Type micAltUp|
|3|micLAltDwn|左のAltキーを押下|object.Type micLAltDwn|
|4|micLAltUp|左のAltキーを離す|object.Type micLAltUp|
|5|micRAltDwn|右のAltキーを押下|object.Type micRAltDwn|
|6|micRAltUp|右のAltキーを離す|object.Type micRAltUp|

## Crtl系
|#|Keyコード|説明|使用例(Type)|
|---|---|---|---|
|1|micCtrlDwn|Ctrlキーを押下|object.Type micCtrlDwn|
|2|micCtrlUp|Ctrlキーを離す|object.Type micCtrlUp|
|3|micLCtrlDwn|左のCtrlキーを押下|object.Type micLCtrlDwn|
|4|micLCtrlUp|左のCtrlキーを離す|object.Type micLCtrlUp|
|5|micRCtrlDwn|右のCtrlキーを押下|object.Type micRCtrlDwn|
|6|micRCtrlUp|右のCtrlキーを押下|object.Type micRCtrlUp|

## Function系
|#|Keyコード|説明|使用例(Type)|
|---|---|---|---|
|1|micF1|F1キーを押下|object.Type micF1|
|2|micF2|F2キーを押下|object.Type micF2|
|3|micF3|F3キーを押下|object.Type micF3|
|4|micF4|F4キーを押下|object.Type micF4|
|5|micF5|F5キーを押下|object.Type micF5|
|6|micF6|F6キーを押下|object.Type micF6|
|7|micF7|F7キーを押下|object.Type micF7|
|8|micF8|F8キーを押下|object.Type micF8|
|9|micF9|F9キーを押下|object.Type micF9|
|10|micF10|F10キーを押下|object.Type micF10|
|11|micF11|F11キーを押下|object.Type micF11|
|12|micF12|F12キーを押下|object.Type micF12|

## Lock系
### Caps Lock系
|#|Keyコード|説明|使用例(Type)|
|---|---|---|---|
|1|micCapsLockOn|CapsLock有効|object.Type micCapsLockOn|
|2|micCapsLockOff|CapsLock無効|object.Type micCapsLockOff|

### Num Look系
|#|Keyコード|説明|使用例(Type)|
|---|---|---|---|
|1|micNumLockOn|Num Lock有効|object.Type micNumLockOn|
|2|micNumLockOff|Num Lock無効|object.Type micNumLockOff|

### Scrool Look系
|#|Keyコード|説明|使用例(Type)|
|---|---|---|---|
|1|micScrollOn|Scroll Lock有効|object.Type micScrollOn|
|2|micScrollOff|Scroll Lock無効|object.Type micScrollOff|


## Shift系
|#|Keyコード|説明|使用例(Type)|
|---|---|---|---|
|1|micShiftDwn|Shiftキーを押下|object.Type micShiftDwn|
|2|micShiftUp|Shiftキーを離す|object.Type micShiftUp|
|3|micLShiftDwn|左Shiftキーを押下|object.Type micLShiftDwn|
|4|micLShiftUp|左Shiftキーを離す|object.Type micLShiftUp|
|5|micRShiftDwn|右Shiftキーを押下|object.Type micRShiftDwn|
|6|micRShiftUp|右Shiftキーを離す|object.Type micRShiftUp|

## Windows系
|#|Keyコード|説明|使用例(Type)|
|---|---|---|---|
|1|micWinLogoDwn|Windowsキーを押下|object.Type micWinLogoDwn|
|2|micWinLogoUp|Windowsキーを離す|object.Type micWinLogoUp|
|3|micLWinLogoDwn|左のWindowsロゴキーを押下|object.Type micLWinLogoDwn|
|4|micLWinLogoUp|左のWindowsロゴキーを離す|object.Type micLWinLogoUp|
|5|micRWinLogoDwn|右のWindowsロゴキーを押下|object.Type micRWinLogoDwn|
|6|micRWinLogoUp|右のWindowsロゴキーを離す|object.Type micRWinLogoUp|


## 矢印系
|#|Keyコード|説明|使用例(Type)|
|---|---|---|---|
|1|micUp|上矢印キーを押下|object.Type micUp|
|2|micDwn|下矢印キーを押下|object.Type micDwn|
|3|micLeft|左矢印キーを押下|object.Type micLeft|
|4|micRight|右矢印キーを押下|object.Type micRight|


## その他

|#|Keyコード|説明|使用例(Type)|
|---|---|---|---|
|1|micIns|Insertキーを押下|object.Type micIns|
|2|micDel|Deleteキーを押下|object.Type micDel|
|3|micHome|homeキーを押下|object.Type micHome|
|4|micEnd|Endキーを押下|object.Type micEnd|
|5|micPgUp|Page Upキーを押下|object.Type micPgUp|
|6|micPgDwn|Page Downキーを押下|object.Type micPgDwn|
|7|micBack|Back spaceキーを押下|object.Type micBack|
|8|micReturn|Enterキーを押下|object.Type micReturn|
|9|micTab|Tabキーを押下|object.Type micTab|
|10|micBreak|Breakキーを押下|object.Type micBreak|
|11|micPause|Pauseキーを押下|object.Type micPause|
|12|micPrintScr|Print Screenキーを押下|object.Type micPrintScr|

# 値の比較

|Keyコード|説明|説明2|
|---|---|---|
|micGreaterThan|より大きい|UFTがアイテムのプロパティ値が指定された値より大きいかどうかを確認するように指定します|
|micLessThan|より小さい|UFTがアイテムのプロパティ値が指定された値より小さいかどうかを確認するように指定します|
|micGreaterThanOrEqual	|以上|UFTがアイテムのプロパティ値が指定された値以上であるかどうかを確認するように指定します|
|micLessThanOrEqual|以下|UFTがアイテムのプロパティ値が指定された値以下であるかどうかを確認するように指定します|
|micNotEqual|等しくない|UFTがアイテムのプロパティ値が指定された値と等しくないかどうかを確認するように指定します|
|micRegExpMatch|正規表現|UFTがアイテムのプロパティ値が指定された値と正規表現の一致を達成するかどうかを確認することを指定します| 

正規表現では大文字と小文字が区別され、完全に一致する必要があります。
たとえば、 'E. * h'は 'Earth'に一致しますが、'The Earth'または 'earth'には一致しません

```VB:例：オブジェクトのitem数が"8より大きく"なるまで待つ
Object.waitproperty "item",micGreaterThan(8)
```

# サンプルコード


```VB:キー操作のサンプルコード

'[Ctrl]+[C]でのコピー
Object(hoge).PressKey "C", micCtrl

'コピーの別の方法。Crtl + Cでコピーして,Ctrlキーを戻す
Object.Type micCtrlDown & "C" & micCtrlUp

'[Tab]操作
Object.Type micTab

'Altを使う方法。AltDownしたままだと、キーを押しっぱなしと同じ意味になる。
Object.Type micAltDown
Object.Type micAltUp

```

# 終わりに
どうしてもオブジェトが操作出来ないときに、
Tabキーなら移動ができる...！といった場合にキー操作を使う場面が多いかと思います。

> Object.Type micCtrlDown & "C" & micCtrlUp

値をコピーする場合も、オブジェクトが正しく取得出来ていたら、

> Object.GetROProperty "Text"

を使うなどして値を取得することが可能かと思います。
ここで紹介した操作を実装する機会は限られてくるかと思いますが、もしよかったら使ってみてください。




*****
# 参考・参照
・VBScropt_SendKey
http://wsh.style-mods.net/ref_wshshell/sendkeys.htm

・値の比較
https://admhelp.microfocus.com/uft/en/15.0-15.0.1/UFT_Help/Subsystems/OMRHelp/Content/VisualBasic/VBPACKAGELib~VbToolbar.html