【SetROBO】UI記録モードで入力を記録する際の備忘録

# はじめに
こんにちは。社内PCのキッティングを担当している@Cheeeeeseです。
[前回の記事](https://qiita.com/Cheeeeese/items/1a4f74fcc65f41c5b369)に引き続き、「UI記録モード」についてです。

V2.0で少しずつシナリオ作成を進めているのですが、UI記録モードの弱点を見つけてしまったので、今後のためにも記録しておきます。


# 環境
- Windows 11 Pro 22H2 (64bit)
- SetROBO for Kitting V2.0

# 【弱点】入力(Input)が記録されない場合がある
UI記録モードで色々記録が取れるようにはなったのですが、入力の記録は取れませんでした。

前のバージョンだと記録できる画面だと入力操作も「～.Input("ほにゃほにゃ");」と自動でコードが生成されていたのですが、UI記録モードだとEditをクリックしたことのコードは自動生成されるけど、入力操作のInputは自動生成されないようです。

例えばこことか
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2830862/130644e0-eefa-279f-bd37-d7f655f6cd7e.png" width="80%">

なので、Editへの入力は修正が必要でした。
　

### しかも...
この設定画面、「～.Input("ほにゃ")」じゃ入力できませんでした。

そもそもUI記録モードだとInput自体使えないのかなと思ったんだけど、
別の画面だとInput使えたので多分この設定画面への入力がダメなのかも。


# 設定画面の入力コード
Inputはダメだったけど、キー操作は使えたので、今回はクリップボードにコピー＆貼り付けで対応しました。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2830862/61d4a873-0b2a-2913-d1d8-19892f6625d7.png" width="80%">

これで入力できました。
　

```ruby:SetROBO
using System;
using System.Drawing;
using Arp.Prova.ImageLibrary;
using Arp.Prova.CsvLib;
using Arp.Prova.PlayLib;

using System.Windows.Forms;

// CodeClass
public class CodeClass
{
	public static int CodeStart()
	{
		int waitTime = 1000;
		string networkName = "";
		string password = "";
		
		//[ネットワークとインターネット > Wi-Fi]を起動
		PlayLib.ProcessStart("ms-settings:network-wifi");
		
		//「設定」画面確認
		if(PlayLib.WaitWindow("設定", true, 30) == false)
		{
			PlayLib.TestLogError("【ERROR】[設定]画面の起動に失敗しました。");
			return -1;
		}
		
		//「既知のネットワークを管理」をクリック
		PlayLib.Window("設定").UIGroup("既知のネットワークを管理").Click();
		PlayLib.Sleep(waitTime);
		
		//「ネットワークの追加」をクリック
		PlayLib.Window("設定").UIButton("ネットワークの追加").Click();
		PlayLib.Sleep(waitTime);
		
		//ネットワーク名のEditをクリック
		PlayLib.Window("設定").UIEdit("ネットワーク名").Click();
		
		//クリップボードにネットワーク名を設定
		Clipboard.SetText(networkName);
		
		//ネットワーク名に貼り付け
		PlayLib.Window("設定").UIEdit("ネットワーク名").Input("{Ctrl_Down}v{Ctrl_Up}");
		PlayLib.Sleep(waitTime);
		
		//「セキュリティの種類」のコンボボックスを表示
		PlayLib.Window("設定").UIComboBox("セキュリティの種類").Click();
		PlayLib.Sleep(waitTime);
		
		//「WPA2-パーソナル AES」を選択
		PlayLib.Window("設定").UIListItem("WPA2-パーソナル AES").Click();
		PlayLib.Sleep(waitTime);
		
		//セキュリティ キーのEditをクリック
		PlayLib.Window("設定").UIEdit("セキュリティ キー").Click();
		
		//クリップボードにパスワードを設定
		Clipboard.SetText(password);
		
		//セキュリティ キーに貼り付け
		PlayLib.Window("設定").UIEdit("セキュリティ キー").Input("{Ctrl_Down}v{Ctrl_Up}");
		PlayLib.Sleep(waitTime);
		
		//「自動的に接続する」にチェックを入れる
		PlayLib.Window("設定").UICheckBox("自動的に接続する").Click();
		PlayLib.Sleep(waitTime);
		
		//「保存」ボタンをクリック
		PlayLib.Window("設定").UIButton("保存").Click();
		PlayLib.Sleep(waitTime);
		
		//設定画面を閉じる
		PlayLib.Window("設定").Close();

		return 0;
	}
}
```

# ちなみに（前から記録が取れる画面の場合）
前から記録が取れる画面でも、UI記録モードだとコントロール名が取れない現象もあります。

例えば、この「コンピューター名/ドメイン名の変更」画面のコンピューター名を入力する操作を記録すると
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2830862/245ef250-eff9-f506-b474-4f18c0f138f7.png" width="40%">

旧バージョンの場合：`PlayLib.Window("コンピューター名/ドメイン名の変更").Edit("コンピューター名(C):").Input("PC10");`
⇒Editのコントロール名がちゃんと記録されている。

UI記録モードの場合：`PlayLib.Window("コンピューター名/ドメイン名の変更").UIEdit("UIEdit&1").Input("PC01");`
⇒UIEditのコントロール名が「"UIEdit&1"」になってしまう。

これに関しては、記録モードの切り替えが出来るので、「記録モード(x1.9.5.0以前)」に切り替えて入力操作を記録するという方法もありです。（少し面倒ですが）


:raised_hand:とにかく、<b>「UI記録モード」で入力操作を記録した場合は要確認</b>です！

# 最後に
まさかの入力操作のコードは自動生成されませんでした。


# 参考にしたサイト
- [SetROBOサポートページ](https://www.setrobo.jp/support/)