次の HTML コードがあります。
<div class="ui-selectmenu-menu" style="z-index: 1; top: 251px; left: 37px;">
<ul class="ui-widget ui-widget-content ui-selectmenu-menu-dropdown ui-corner-bottom" aria-hidden="true" role="listbox" aria-labelledby="gwt-uid-191-button" id="gwt-uid-191-menu" style="width: 270px; height: auto;" aria-disabled="false" aria-activedescendant="ui-selectmenu-item-999">
<li role="presentation" class="ui-selectmenu-item-selected">
<a href="#nogo" tabindex="-1" role="option" aria-selected="true" id="ui-selectmenu-item-999">All Applications</a></li>
<li role="presentation" class="">
<a href="#nogo" tabindex="-1" role="option" aria-selected="false">Option Alpha</a></li>
<li role="presentation" class="ui-corner-bottom">
<a href="#nogo" tabindex="-1" role="option" aria-selected="false">Option Beta</a></li>
</ul>
</div>
...
<div class="ui-selectmenu-menu"...>...</div>
このように WebElement を取得できui-selectmenu-menu
ます (ページにはたくさんあります。したがって、 を使用しますfindElements
) :
List<WebElement> dropdowns = driver.findElements(By.className("ui-selectmenu-menu"));
そして、そのul
下は次のようになります。
WebElement ddChild = dropdowns.get(0).findElement(By.className("ui-selectmenu-menu-dropdown"));
私はこのようにすべてをつかむことさえできli
ますddChild
:
List<WebElement> ddOpts = ddChild.findElements(By.xpath("//*[@id='gwt-uid-191-menu']/li[*]"));
しかし、各要素の<a href="#nogo"...
下にあるタグのテキスト値を取得する方法がわからないという問題があります。li
すべてをループしてテキスト値をddOpts
取得し、それらをに保存できるようにしたいと思います。<a href="#nogo"...
ArrayList<String>
したがって、たとえば、最初のArrayList<String>
値にはAll Applications
、 then Option Alpha
、 thenが含まれ、次の要素からOption Beta
次の要素にジャンプし、プロセス全体をもう一度実行します。ul
dropdowns
ArrayList<String>
シンプルなソリューションだと確信していますが、Selenium WebDriver の経験は限られています。
ありがとう!
PS: WebElement の子を取得する簡単な方法はありますか?