如何使用Java获取Selenium WebDriver的所有<li> </> </ul> </li>

时间:2014-07-13 02:33:53

标签: java selenium selenium-webdriver

我试图通过以下代码获得所有li或ul:

List <WebElement> we = ffDriver.findElement(By.xpath("//*[@id='sf-menu']/li/a/b"));

但是在向无法转换的webelements错误梨添加强制转换时,我面临错误Add cast to List <WebElements>

如何将ul的所有元素分配给List?在下面的css for selenium webdriver with java

<ul id="sf-menu">

<li class="current">
    <a id="menu_admin_viewAdminModule" class="firstLevelMenu" href="/symfony/web/index.php/admin/viewAdminModule">
        <b>

            Administración

        </b>
    </a>
    <ul></ul>
    <!--

     second level 

    -->
</li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>

3 个答案:

答案 0 :(得分:3)

您需要findElements()而不是findElement()

List <WebElement> we = ffDriver.findElements(By.xpath("//*[@id='sf-menu']/li/a/b"));

答案 1 :(得分:1)

您无法通过findElement(返回WebElement)获取List。你只有两种方法

1 - 像elecxe的建议(推荐)

2 -

List<WebElement> we;
we.add(ffDriver.findElements(By.xpath("//*[@id='sf-menu']/li")));
we.add(ffDriver.findElements(By.xpath("//*[@id='sf-menu']/li[2]")));
... 
we.add(ffDriver.findElements(By.xpath("//*[@id='sf-menu']/li[n]")));

答案 2 :(得分:0)

WebElement ul_Element = driver.findElement(By.id("sf-menu"));
List<WebElement> li_All = ul_Element.findElements(By.tagName("li"));
System.out.println(li_All.size());
for(int i = 0; i < li_All.size(); i++){
System.out.println(li_All.get(i).getText());
}

//OR

for(WebElement element : li_All){
System.out.println(element.getText());
}
相关问题