このようなパフォーマンスの問題に直面した場合、以下に示すパフォーマンス最適化手法をテスト スクリプトに対して試すことができます。
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();