0

GWT 2.3.0 および GXT 2.2.5 を使用して作成されたアプリケーションを Java 上の Selenium 2.25 WebDriver でテストしようとしています。

アプリケーションには、多数のオプションを持つ ComboBox があり、リストにスクロールバーが表示されるほどです。リストに表示されていない項目を選択する必要があります。

次のコードを使用してテストを実行します。

//xpath for combobox trigger
String xpathExpression = "//div[starts-with(@id,'combobox ID']/descendant::img[contains(@class,'x-form-trigger-arrow')]";
driver.findElement(By.xpath(xpathExpression)).click();

//xpath for combobox list item
xpathExpression = "//div[contains(@class,'x-combo-list-item']/descendant::div[text()='item text']";
driver.findElement(By.xpath(xpathExpression)).click();

ここで、comboBoxIDは ComboBox を識別するために使用する ID プレフィックスであり、item textはアイテムのドロップダウン リストに表示されるテキストです。

項目がページに表示されている場合、テストは正常に実行されます。アイテムがリストの下にありすぎて見えない場合は、ElementNotVisibleExceptionが発生します。

非表示のアイテムを選択する方法はありますか?

4

1 に答える 1

0

要素が表示されないため、Selenium を使用して要素を処理することはできません。したがって、1つの解決策は、最初にドロップダウンをスクロールしてその要素に到達してから、選択を行うことです。

これらのdivs選択値に対応するものは表示されず、DOM でレンダリングされます。そうしないと、スクロール時にオンザフライでレンダリングされます。したがって、javascript コードを実行して、取得する要素にフォーカスを設定し (既にレンダリングされていない場合)、ドロップダウンをスクロールして (レンダリングされていない場合)、セレクターを使用して選択することができます。例えば

WebDriver driver = /*driver you created*/;
if (driver instanceof JavascriptExecutor) {
   JavascriptExecutor jsExec = (JavascriptExecutor)driver;
   //you need to use the correct javascript here to do the scrolling or get the focus ex:
   String js = "document.getElementById("elementID").scrollIntoView()";
   jsExec.executeScript(js);
}

次に、おそらく次のような予想される条件下で上記のコードを実行する必要がありますvisibilityOfElementLocated

于 2013-05-23T11:17:13.173 に答える