このようなパフォーマンスの問題に直面した場合、以下に示すパフォーマンス最適化手法をテスト スクリプトに対して試すことができます。
BrowserWindow
iframe name=1
iframe name=2
iframe name=3
iframe name=4
iframe name=5
iframe name=6
iframe name=7
iframe name=8
iframe name=9
//BrowserApplication//BrowserWindow//IFRAME[@name='6']//IFRAME[@name='8']//input[@name='username']
name が 8 の iframe の要素を操作対象とするには、すべての親 iframe も iframe サポートのホワイトリスト に指定する必要があります。この例の場合は、「name:6, name:8」を iframe サポートのホワイトリスト フィールドに指定します。
iframe サポートのブラックリスト を使って、広告を表示する iframe などを無効化して、テスト対象からはずすことができます。
たとえば、上記の iframe 構造において、name が 1 の iframe とその子 iframe の要素をテストする必要が無ければ、「name:1」を iframe サポートのブラックリスト フィールドに指定します。
OPT_XBROWSER_ENABLE_IFRAME_SUPPORT オプションをオフにして、iframe サポートを完全に無効化することができます。
たとえば、アプリケーションのすべての iframe が広告を表示するために使用されている場合、これらの iframe をテストする必要が無ければ、このオプションを使用できます。
iframe の検索数を減らすようにロケーターを構成すると、検索操作の再生パフォーマンスを向上させることができます。このパフォーマンス最適化手法は、iframe サポートのブラックリスト や iframe サポートのホワイトリスト と組み合わせて使用すると、より効果的です。
たとえば、上記の iframe 構造において、name が 8 の iframe 内の要素だけを操作対象とする場合を考えます。XPath ロケーターやオブジェクト マップ エントリを、iframe の検索数を減らすように構成することができます。
desktop.<DomElement>find("//BrowserApplication//BrowserWindow//IFRAME[@name='6']//IFRAME[@name='8']//input[@name='username']").typeKeys("my user name");
desktop.<DomElement>find("//BrowserApplication//BrowserWindow//IFRAME[@name='6']//IFRAME[@name='8']//input[@name='password']").typeKeys("top secret");
desktop.<DomElement>find("//BrowserApplication//BrowserWindow//IFRAME[@name='6']//IFRAME[@name='8']//input[@name='loginButton']").click();
DomElement iframe = desktop.<DomElement>find("//BrowserApplication//BrowserWindow//IFRAME[@name='6']//IFRAME[@name='8']");
iframe.<DomElement>find("//input[@name='username']").typeKeys("my user name");
iframe.<DomElement>find("//input[@name='password']").typeKeys("top secret");
iframe.<DomElement>find("//input[@name='loginButton']").click();