カスタマイズしたセッション処理を使用すべき場合

スクリプト内の WebPageUrl 呼び出しで、クエリ文字列の一部にセッション ID が含まれる URL を使用しているとしましょう。このスクリプトを再生すると、ハードコードされたこの静的なセッション ID がサーバーに送信されます。セッション ID では再生したセッションが正しく識別されないため (それでも記録セッションは識別されます)、再生は正しく機能しません。スクリプト内の静的なセッション ID を実行時に生成された動的な値に置き換えなければ、Web アプリケーションでは通常、We are sorry, your session has expired.Please return to the login screen and try again (セッションが期限切れです。ログイン画面に戻ってやり直してください) などのエラーが発生します。

幸いなことに、Silk Performer ではセッションのカスタマイズが必要になることは多くなく、仮にセッションの手動カスタマイズが必要な場合でも、Silk PerformerTrueLog Explorer の指示に従って手順を進めることができます。

ほとんどの場合、スクリプトを記録する際には、セッション処理をカスタマイズするために必要な変更は何もなく、そのまま動作します。Silk Performerでは、そのため、以下のようにハードコードされたセッション ID をユーザーが手動で処理しないですむように、非常に高度な方法を複数用いています。

HTML の動的生成にクライアント側 Java Script を多用した結果、Silk Performer Recorder が HTML コンテキストを見失い、コンテキストのない Web API 呼び出しを記述する場合があります。WebPageUrlWebPageForm などの、コンテキストのない Web API 呼び出しには、URL がパラメータとして含まれています。これらのまれなケースでは、ハードコードされたセッション ID がスクリプトに含まれていることがあります。それらが書かれている箇所は、Web API 呼び出しの URL パラメータや、スクリプトの dclform セクションに宣言されているフォーム フィールドです。

コンテキストのあるスクリプト (カスタマイズ不要)

transaction TMain
  begin 
    WebPageUrl("http://lab38/ShopIt/"); // first call is always context-less
    WebPageLink("Join the experience!"); 
    WebPageSubmit("Enter", SHOPIT_MAIN_ASP001);
    WebPageLink("Products");
  end TMain;

 dclform
 SHOPIT_MAIN_ASP001:
    "SessionID" := "" <USE_HTML_VAL>, // hidden value:
    "LGIJALLCGEBMIBIMFKOEJIMM" 
    // recognized as a hidden form 
    // field, the value is taken from 
    // the actual HTML form field.
    "name" := "Jack", // changed
    "New-Name-Button" := "" <USE_HTML_VAL> ; //unchanged
    value: "Enter"

コンテキストのない関数を用いたスクリプト (カスタマイズの必要な静的なセッション データが DCLFORM セクションに含まれている)

transaction TMain
  begin 
    WebPageUrl("http://lab38/ShopIt/"); // first call is always context-less
    WebPageUrl("http://lab38/ShopIt/main.asp", NULL, SHOPIT_MAIN_ASP001);
    WebPageForm("http://lab38/ShopIt/main.asp", SHOPIT_MAIN_ASP002);
    WebPageUrl("http://lab38/ShopIt/products.asp");
  end TMain;

 dclform
 SHOPIT_MAIN_ASP001:
    "from" := "welcome";

    SHOPIT_MAIN_ASP002:
  "SessionID"       := "LGIJALLCGEBMIBIMFKOEJIMM",
    "name"            := "Jack",
    "New-Name-Button" := "Enter";