このようなパフォーマンスの問題に直面した場合、以下に示すパフォーマンス最適化手法をテスト スクリプトに対して試すことができます。
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 の検索数を減らすように構成することができます。
' VB code
With _desktop.BrowserApplication("//BrowserApplication")
With .BrowserWindow("//BrowserWindow")
.DomElement("//IFRAME[@name='6']//IFRAME[@name='8']//input[@name='username']").TypeKeys("my user name")
.DomElement("//IFRAME[@name='6']//IFRAME[@name='8']//input[@name='password']").TypeKeys("top secret")
.DomElement("//IFRAME[@name='6']//IFRAME[@name='8']//input[@name='loginButton']").Click()
End With
End With
// C# code
browserWindow.DomElement("//IFRAME[@name='6']//IFRAME[@name='8']//input[@name='username']").TypeKeys("my user name");
browserWindow.DomElement("//IFRAME[@name='6']//IFRAME[@name='8']//input[@name='password']").TypeKeys("top secret");
browserWindow.DomElement("//IFRAME[@name='6']//IFRAME[@name='8']//input[@name='loginButton']").Click();
' VB code
With _desktop.BrowserApplication("//BrowserApplication")
With .BrowserWindow("//BrowserWindow")
With .DomElement("//IFRAME[@name='6']//IFRAME[@name='8']")
.DomElement("//input[@name='username']").TypeKeys("my user name")
.DomElement("//input[@name='password']").TypeKeys("top secret")
.DomElement("//input[@name='loginButton']").Click()
End With
End With
End With
// C# code
DomElement iframe = browserWindow.DomElement("//IFRAME[@name='6']//IFRAME[@name='8']");
browserWindow.DomElement("//input[@name='username']").TypeKeys("my user name");
browserWindow.DomElement("//input[@name='password']").TypeKeys("top secret");
browserWindow.DomElement("//input[@name='loginButton']").Click();