我有以下 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>
我能够ui-selectmenu-menu
像这样获得 WebElement(页面上有很多;因此,使用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 的孩子?