スクリプト内の 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 Performer の TrueLog Explorer の指示に従って手順を進めることができます。
ほとんどの場合、スクリプトを記録する際には、セッション処理をカスタマイズするために必要な変更は何もなく、そのまま動作します。Silk Performerでは、そのため、以下のようにハードコードされたセッション ID をユーザーが手動で処理しないですむように、非常に高度な方法を複数用いています。
HTML の動的生成にクライアント側 Java Script を多用した結果、Silk Performer Recorder が HTML コンテキストを見失い、コンテキストのない Web API 呼び出しを記述する場合があります。WebPageUrl や WebPageForm などの、コンテキストのない 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"
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";