下面的代码是:
<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"));
我甚至可以像这样抓取ddChild
下的所有li
:
List<WebElement> ddOpts = ddChild.findElements(By.xpath("//*[@id='gwt-uid-191-menu']/li[*]"));
但问题是,我似乎无法弄清楚如何获取每个li
元素下<a href="#nogo"...
标记的文本值。
我希望能够遍历所有ddOpts
,获取<a href="#nogo"...
文本值并将其保存到ArrayList<String>
。
例如,我的第一个ArrayList<String>
值将包含All Applications
,然后是Option Alpha
,然后是Option Beta
,然后从下一个dropdowns
跳到下一个ul
元素,并再次执行整个过程,所有这些都是在添加到ArrayList<String>
时完成的。
我相信这是一个简单的解决方案,但我有有限的经验与 selenium WebDriver。
谢谢!
- PS:有没有简单的方法来抓取WebElement的子元素?*
6条答案
按热度按时间7z5jn7bk1#
xurqigkl2#
要提取
WebElement
的href
属性(在此示例中指的是锚标记<a>
),请执行以下操作:jxct1oxe3#
这也可以解决您的问题:
shyt4zoc4#
下面的代码将在上面HTML代码的下拉列表中选择OptionAlpha
驱动程序.findElement(通过.xpath(“//[@class ='ui-选择菜单-菜单')).单击();
驱动程序.findElement(通过.xpath(“//[@class ='ui-小工具ui-小工具-内容ui-选择菜单-菜单-下拉ui-角-底部']//**[text()='选项字母']”)).单击();
ugmeyewa5#
请尝试以下代码获取
<a href
中的所有链接希望这个有用。
e3bfsja26#
href="#nogo"
对于所有锚标记都是相同的,因此在通过方法选择项时可能会产生歧义