スクリプト内の WebPageUrl 呼び出しが、クエリ文字列の一部にセッション ID を含む URL を使用する場合、このスクリプトが再生されると、それと同じハードコードされた静的なセッション ID がサーバーに送信されます。しかし、この セッション ID では再生セッションを正しく識別できません。これは、以前の記録セッションを表しているに過ぎないため、スクリプトを再生するとエラーが発生します。
スクリプト内の静的なセッション ID を、実行時に生成される動的な値に置換しないと、Web アプリケーションでは、次のようなエラーが生成されます: セッションが期限切れです。ログイン画面に戻ってください。
Silk Performer のセッション処理方法の性質上、ほとんどの Web アプリケーションでは、セッション処理のカスタマイズは必要ありません。まれに、手動によるセッションのカスタマイズが必要になった場合でも、TrueLog Explorer を利用して、簡単にその作業を実行できます。
Silk Performer では、ハードコードされたセッション ID を手動で処理する必要性が減るように、次の 2 つのセッション ID 処理方法を使用しています。
Silk Performer は、クッキーを使用してセッション情報を交換するサーバーに対して、動的なセッション ID 値を自動的に処理します。Silk Performer は、ブラウザのクッキー管理を正確にエミュレートするので、ブラウザと同じように、サーバーにクッキーを送信できます。このため、手動でやり取りをして、状態を維持する必要がありません。
HTML を動的に生成するためにクライアント側の JavaScript を利用している場合は、Silk Performer の Recorder が HTML のコンテキストを失って、コンテキストのない Web API 呼び出しが生成されることがあります。コンテキストなしの Web API 呼び出し (WebPageUrl、WebPageForm など) には、パラメータとして URL が含まれます。このようなまれなケースでは、スクリプトにハードコードされたセッション ID が含まれています。このようなセッション ID は、Web API 呼び出しの URL パラメータ内や、スクリプトの DCLFORM セクションで宣言されているフォーム フィールド内で見つけることができます。
カスタマイズする必要がないコンテキストを持つスクリプトの例を以下に示します。
transaction TMain begin WebPageUrl("http://myHost/ShopIt/"); // first call 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: // LGIJALLCGEBMIBIMFKOEJIMM2 // recognized as a hidden // form field, the value is // taken from the actual // HTML form field. "name" := "Tester", // changed "New Name Button" := "" <USE_HTML_VAL>; // unchanged value: "Enter"
コンテキストなしの関数を含むスクリプトの例 (カスタマイズが必要な静的なセッション データが DCLFORM セクションに含まれている) を以下に示します。
transaction TMain begin WebPageUrl("http://myHost/ShopIt/"); // first call always context-less WebPageUrl("http://myHost/ShopIt/main.asp", NULL, SHOPIT_MAIN_ASP001); WebPageForm("http://myHost/ShopIt/main.asp", SHOPIT_MAIN_ASP002); WebPageUrl("http://myHost/ShopIt/products.asp"); end TMain; dclform SHOPIT_MAIN_ASP001: "from" := "welcome"; SHOPIT_MAIN_ASP002: "SessionID" := "LGIJALLCGEBMIBIMFKOEJIMM2", "name" := "Tester", "New Name Button" := "Enter";