0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

WinActorでの[変数値保存]を[変数値]に変換するツール(WinActorテスト時間削減)

Last updated at Posted at 2025-09-28

WinActorでのテスト時間削減をするために必要なツールの説明です。

WinActorのノードでは
 ①NTTAT_v7.x.x.ja/01_WinActor制御/07_デバッグ/デバッグ:変数値保存
 ②NTTAT_v7.x.x.ja/03_変数/01_csvファイル読み込み/csvファイル→変数値
が用意されています。
この2つのノードを使用することでテスト時間の削減が可能です。

 例
  処理の前半ではWebからデータのダウンロードを実施。これに30分時間がかかる
  処理の後半ではダウンロードしたデータの編集を実施。これに5分かかる

今回、処理後半の編集処理の修正/テストを実施する

普通にテストすれば「前半30分+後半5分」の時間が必要ですが、
これを上記の2つのノードを使用することで毎回5分でテストが実施できます。

 やり方
 ・最初の1回だけ、処理前半終了後に上記の①のノードにて変数値を保存
 ・後半の実行前に上記の②ノードを追加
 ・以後のテストは後半部分のみ実行
  (あたかもシナリオ先頭から実行しているのと同じ状態)
  ※注意 前半処理のアウトプットなどは退避/配置しておく必要があります
  

  ※その他
  ・エラー時に変数値を出力しておけば、エラー時の再現テストに応用がききます。
  ・文言検索がやりやすいです。
  ・改行付きデータも対応しています。

ツールの説明
 上記の①②のアウトプットファイルはそれぞれのフォーマットが異なります。
  ツールでは①outputファイルを②に変換するツールです。
  また、ファイル内容を見やすく表示、その場で変更することもできます。
  ツールは「hta」を使用しています。
 (hta:Microsoftが標準で提供している簡易ブラウザのアプリケーション)
 
 実行結果
image.png

  ①変数一覧
  WinActorの「変数一覧」を[Ctrl+A]で全体をコピーしてファイル化してください
 image.png

  ②WinActorの実行時の変数一覧
   WinActorのノードで取得したファイルを指定してください
  (NTTAT_v7.x.x.ja/01_WinActor制御/07_デバッグ/デバッグ:変数値保存)

  ③インポート用のファイル
  インポート用のファイルを指定してください

 実行方法
  ・ソースをコピーして「xxxx.hta」でファイルを作成してください。
   ・ファイルをダブルクリックで起動してください。
      ※実行時に
       image.png
       が表示されます。こちらは「いいえ」で応答してください。
        このスクリプトでは「応答しない」という事にはなりません。
       ※読込で2回、出力で1回 表示されます。
  ・「読込」押下で変数が表示されます。
  ・「出力」押下で②を更新しつつ、③が生成されます。

ソース

<html>
<head> 
<title>テスト時間短縮</title> 
<HTA:APPLICATION  
    APPLICATIONNAME="WinActor変数ファイル表示&インポート用ファイル変更"
    SCROLL="yes"
    SINGLEINSTANCE="yes" 
>


<script language="VBScript"> 
' --- テキスト読み込み---
Sub Window_onLoad 
       window.resizeTo 700,800 
End Sub  

'--- テキスト読込 ---
Sub ReadText
 Dim ITEM(10000),VALU(10000)
 Set objFso = CreateObject("Scripting.FileSystemObject")
 Set d = CreateObject("Scripting.Dictionary")
 
 '--- ①変数使用箇所 パス入力確認 ---
 If document.getElementsByTagName("input")(0).value = "" then
   msgbox "ファイルを指定して下さい。", 16, "エラー"
 
 Else
   Sleep 1000
   Set objFile = objFso.OpenTextFile(MyTextBox1.Value, 1)
   cnt = 1
   '--- ①変数使用箇所csvファイル読込 ---
   Do while Not objFile.AtEndOfStream
     inpf = objFile.ReadLine
     
     '--- 2行目以降でレコードにタブがある場合 ---
     If InStr(inpf, vbTab) > 0 And cnt > 1 Then
       c = split(inpf,vbTab)
       If Not d.Exists(c(2)) And C(2)<> "" then d.add c(2), ""
     End if
     cnt = cnt + 1
     
   Loop
 End If
 
 '--- 辞書配列全体表示 ---
 'X = ""
 'keys = d.Keys
 'For Each key In keys
 '  X = X  & key & ": " & d.Item(key) & VbCrLf
 'Next
 'msgbox X
 
 '--- 実行時の変数一覧 パス入力確認 ---
 If document.getElementsByTagName("input")(1).value = "" then
   msgbox "ファイルを指定して下さい", 16, "エラー"
 
 Else
   Sleep 1000
   Set objFile = objFso.OpenTextFile(MyTextBox2.Value, 1)
   cnt = 0
   '--- ②変数一覧読込 ---
   Do while Not objFile.AtEndOfStream
     inpf = objFile.ReadLine
     'msgbox "レコード:" & inpf
     '--- 先頭と文末は除外 ---     vbLf(またはChr(10)
     If inpf <> "---------------------" And inpf <> "--------------------- Current variable" Then
       
       
       '--- ②において変数名が存在する行 「=」が存在する行 ---
       If InStr(inpf, "=") > 0 Then
         cnt = cnt + 1
         'msgbox "行数:" & cnt & " レコード:" & inpf
         
         '--- ①に存在する変数名か判断 ---
         If d.Exists(Left(inpf, InStr(inpf, "=") -1 )) Then
           
           '--- 変数名セット ---
           ITEM(cnt) = Left(inpf, InStr(inpf, "=") -1 )
           
           '--- 変数値セット ---
           VALU(cnt) = Right(inpf, Len(inpf) - InStr(inpf, "="))
           
           
         Else
           '--- 改行コード付き値 ---
           VALU(cnt) =  VALU(cnt) & "<br>" & inpf
         End If
         
       Else
         VALU(cnt) =  VALU(cnt) & "<br>" & inpf  
         'msgbox "行数:" &  cnt  &  " 値:" &  VALU(cnt)
       End If
     End If
   Loop
   
   '--- 出力ファイルのヘッダ ---
   OUTP = "<span contenteditable><TABLE width=100% border><TR><TD>変数名</TD><TD>値</TD></TR>"
   
   '--- 出力レコード ---
   For i = 1 To cnt 
     OUTP = OUTP & "<TR><TD>" & ITEM(i) & "</TD><TD>" & VALU(i) & "</TD></TR>"
   Next 
   
   '--- 出力ファイルのフッタ ---
   For i = 1 to 5
     OUTP = OUTP & "<TR><TD></TD><TD></TD></TR>"
   Next
   OUTP = OUTP & "</TABLE></span>"
   TableArea.innerHtml = OUTP
   objFile.Close
 End if
 
 Set dic = Nothing
 Set objFile = Nothing
 Set objFso = Nothing
End Sub


'--- テキスト出力---
Sub WriteText
 
 Sleep 1000
 Set objFso = CreateObject("Scripting.FileSystemObject")
 
 '--- パス取得済確認 ---
 if document.getElementsByTagName("input")(2).value = "" then
   msgbox "ファイルを指定して下さい", 16, "エラー"
 Else
   If document.getElementsByTagName("TABLE").length = 0 then
     msgbox "読込が完了していないと出力はできません", 16, "エラー"
   Else
   
     '--- ②変数ファイルの上書き ---
     Set objFile = objFso.OpenTextFile(MyTextBox2.Value, 2, True)
     Set TABLE = document.getElementsByTagName("TABLE")(0)
     i = 1
     While TABLE.rows(i).cells(0).innerText <> ""
         objFile.WriteLine TABLE.rows(i).cells(0).innerText & "=" & TABLE.rows(i).cells(1).innerText
         i = i + 1
     Wend
     
     '--- インポート用ファイル作成 ---
     Set objFile = objFso.OpenTextFile(MyTextBox3.Value, 2, True)
     Set TABLE = document.getElementsByTagName("TABLE")(0)
     
     '--- 変数名 ---        
     i = 1
     Line = ""
     While TABLE.rows(i).cells(0).innerText <> ""
       Line = Line & TABLE.rows(i).cells(0).innerText & ","
       i = i + 1
     Wend
     objFile.WriteLine Line
     
     '--- 変数値 ---
     i = 1
     Line = ""
     While TABLE.rows(i).cells(0).innerText <> ""
       Line = Line & """" & TABLE.rows(i).cells(1).innerText & """" & ","
       i = i + 1
     Wend
     objFile.WriteLine Line
     
     objFile.Close
     
     
     '--- Excel処理 全体選択後にフォーマットを数値にする(指数表示させない)---
     Set exl = CreateObject("Excel.Application")
     exl.Application.Visible = true
     exl.Application.Workbooks.Open(MyTextBox3.Value)
     exl.Cells.Select
     exl.Selection.NumberFormatLocal = "0"
     exl.ActiveWorkbook.Save
     exl.Quit
     
   End if
 End if
 
 Set objFile = Nothing
 Set objFso = Nothing
 Set exl = Nothing

End Sub

Sub Sleep(millisec)
 Dim dstart
 dstart = timer * 1000
 Do while True
   if timer * 1000 >= dstart + millisec then Exit Do
 Loop
End Sub


</script></head>


<body>

①変数一覧 ※WinActorの変数一覧をCtrl+Aで全コピーしてテキストコピーを作成
<input name="MyTextBox1" type="file" size=100 id="selfile1"><p>

②WinActor実行時の変数一覧 ※WinActorシナリオの01_WinActor制御/07_デバッグ/デバッグ:変数値保存の結果<p>
<input name="MyTextBox2" type="file" size=100 id="selfile2"><p>

③インポート用csvファイル ※WinActorシナリオの03_変数/01_csvファイル→変数値<p>
<input name="MyTextBox3" type="file" size=100 id="selfile3"><p>

--------<P>

<input type="button" value="読込" name="run_button1" onClick="ReadText">
ファイルパスを指定し、読込ボタンを押下して下さい。<br>
内容に修正がある場合は修正後に出力ボタンを押下して下さい。<p>
<input type="button" value="出力" name="run_button3" onClick="WriteText"> (※出力は上書きです。読込後しか上書き出来ません)
<p>
<p>
<span id=TableArea></span>
<p>


</body> 
</html>

※※※※
 過去の記事
  「WinActor変数ファイル表示(HTAを使用したテキストファイル表示)」
を機能アップさせたツールです。
 

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?