はじめに
こんにちは。社内PCのキッティングを担当している@Cheeeeeseです。
前回の記事に引き続き、「UI記録モード」についてです。
V2.0で少しずつシナリオ作成を進めているのですが、UI記録モードの弱点を見つけてしまったので、今後のためにも記録しておきます。
環境
- Windows 11 Pro 22H2 (64bit)
- SetROBO for Kitting V2.0
【弱点】入力(Input)が記録されない場合がある
UI記録モードで色々記録が取れるようにはなったのですが、入力の記録は取れませんでした。
前のバージョンだと記録できる画面だと入力操作も「~.Input("ほにゃほにゃ");」と自動でコードが生成されていたのですが、UI記録モードだとEditをクリックしたことのコードは自動生成されるけど、入力操作のInputは自動生成されないようです。
なので、Editへの入力は修正が必要でした。
しかも...
この設定画面、「~.Input("ほにゃ")」じゃ入力できませんでした。
そもそもUI記録モードだとInput自体使えないのかなと思ったんだけど、
別の画面だとInput使えたので多分この設定画面への入力がダメなのかも。
設定画面の入力コード
Inputはダメだったけど、キー操作は使えたので、今回はクリップボードにコピー&貼り付けで対応しました。
これで入力できました。
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記録モードだとコントロール名が取れない現象もあります。
例えば、この「コンピューター名/ドメイン名の変更」画面のコンピューター名を入力する操作を記録すると
旧バージョンの場合:PlayLib.Window("コンピューター名/ドメイン名の変更").Edit("コンピューター名(C):").Input("PC10");
⇒Editのコントロール名がちゃんと記録されている。
UI記録モードの場合:PlayLib.Window("コンピューター名/ドメイン名の変更").UIEdit("UIEdit&1").Input("PC01");
⇒UIEditのコントロール名が「"UIEdit&1"」になってしまう。
これに関しては、記録モードの切り替えが出来るので、「記録モード(x1.9.5.0以前)」に切り替えて入力操作を記録するという方法もありです。(少し面倒ですが)
とにかく、「UI記録モード」で入力操作を記録した場合は要確認です!
最後に
まさかの入力操作のコードは自動生成されませんでした。