スクリプト間でのパラメータの作成と受け渡し

親スクリプトと子スクリプト間で、または単一のスクリプトを使用して、パラメータを作成して渡すことができます。親子シナリオを使用することには、複数の子スクリプトで親スクリプトを使用できるという利点があります。たとえば、親スクリプトによって乱数が作成される場合に、その機能を複数の子スクリプトで使用することがあります。

  1. 渡すパラメータを組み込む親スクリプトを作成します。
    1. ファイル > 新規作成 を選択します。
      資産の新規作成 ダイアログ ボックスが開きます。
    2. [資産の種類] リストから .NET スクリプト を選択し、資産名 テキスト ボックスにスクリプトの名前を入力します。

      たとえば、スクリプトに「NameParameters」という名前を付けることができます。

    3. OK をクリックして、スクリプトを保存します。 Silk Test Workbench によってスクリプトが資産として保存され、スクリプト テンプレートが表示されます。
    4. 作成して子スクリプトに渡すパラメータが含まれるように、Main() サブを変更します。 たとえば、以下の親スクリプトは、テスト アプリケーションで姓名の文字列を渡します。
      Public Sub Main()
                  Dim args As New Dictionary(Of String, Object)
                  args("FName") = "Chris"
                  args("LName") = "Smith"           
      
    5. 子スクリプトの呼び出しと作成したパラメータの名前指定を行う、RunScript コマンドを組み込みます。 たとえば、以下の親スクリプトは、テスト アプリケーションで姓名の文字列を渡し、childscript という名前の子スクリプトを args というパラメータを使用して呼び出します。
      Public Module Main
            Dim _desktop As Desktop = Agent.Desktop
      
            Public Sub Main()
                  Dim args As New Dictionary(Of String, Object)
                  args("FName") = "Chris"
                  args("LName") = "Smith"
                  
                  Workbench.RunScript("childscript", args)
      
            End Sub
      End Module
      
  2. 省略可能:スクリプトで入力されるパラメータを返すメッセージ ボックスを組み込むには、以下のコードを親スクリプトに追加します。
    MsgBox("Hello, " + args("FName") + "!")
    MsgBox ("Hello, " + args("FName") + " " +  args("LName") + "!")
    
    スクリプトの再生時に、テストで入力される値を示すメッセージ ボックスが表示されます。
  3. 親スクリプトからパラメータを呼び出す、子スクリプトを作成します。 たとえば、サンプル Web アプリケーションの登録フォームで姓名を処理する場合は、姓名を含む登録フォームのスクリプトを記録します。以下に、スクリプトの例を示します。
    Imports SilkTest.Ntf.XBrowser
    Public Module Main
    	Dim _desktop As Desktop = Agent.Desktop
    
    	Public Sub Main()
    		With _desktop.BrowserWindow("/BrowserApplication[1]//BrowserWindow")
    			.DomButton("@id='login-form:signup'").Select()
    			.DomTextField("@id='signup:fname'").SetText("first")
    			.DomTextField("@id='signup:lname'").SetText("last")
    	  .DomElement("@src='http://extjs.com/s.gif'").DomClick(MouseButton.Left, 
         New Point(8, 16))
    			.DomButton("@textContents='Today'").Select()
    			.DomTextField("@id='signup:email'").SetText("test@test1.com")
    			.DomTextField("@id='signup:street'").SetText("123 street rd")
    			.DomTextField("@id='signup:city'").SetText("Marlton")
    			.DomListBox("@id='signup:state'").Select("Massachusetts")
    			.DomTextField("@id='signup:zip'").SetText("09876")
    			.DomTextField("@id='signup:password'").SetText("test")
    			.DomButton("@id='signup:signup'").Select()
    			.DomButton("@id='signup:continue'").Select()
    		End With
    		
    	End Sub
    End Module
  4. 設定して親スクリプトに渡す、IDictionary(Of String, Object) という 1 つのパラメータを使用するように Sub Main() を変更します。 IDictionary クラスは、.NET によって提供されます。クラスのドキュメントは、http://msdn.microsoft.com/en-us/library/s4ys34ea.aspx で確認できます。
    修正された Sub Main () コードは、以下のようになります。
    Public Sub Main(args As IDictionary(Of String, Object))
  5. パラメータを使用するコントロールを変更します。
    たとえば、Web アプリケーションの記録で姓名を変更するには、以下のコードを置換します。
    .DomTextField("@id='signup:fname'").SetText("first")
    .DomTextField("@id='signup:lname'").SetText("last")
    以下のように置換します。
    .DomTextField("@id='signup:fname'").SetText(args("FName"))
    .DomTextField("@id='signup:lname'").SetText(args("LName"))
  6. 親スクリプトから、再生 をクリックします。
    注: 子スクリプトからのパラメータを使用するスクリプトを実行すると、パラメータが指定されていないため、スクリプトは失敗します。ただし、パラメータを使用しない 2 番めの Main() サブを追加し、デフォルトのパラメータ値を他方の Main() に渡して単一のスクリプトから直接実行できます。