如何在多个<li>中使用xpath引用元素,而<li>又包含<a> tag

时间:2015-05-05 10:34:16

标签: xpath selenium-webdriver testng

How can i refer multiple elements present under li tag using xpath?

<div id="accordian">
    <ul>
        <li>
            <h3 class="classroom"></h3>

           <ul style="display: block;">
                <li><a href="name01">name1</a></li>
                <li><a href="name02">name2</a></li>
                <li><a href="name03">name3</a></li>
                <li><a href="name04">name4</a></li>   
           </ul>

       </li>

i am using Selenium Webdriver, I tried following code to refer the element, but it returns a blank value.

List<WebElement> listelement=driver.findElements(By.xpath("//div[@id='accordian']/ul/li/ul/li"));

for(WebElement list: listelement)
{
  System.out.println(list.getText());
}

5 个答案:

答案 0 :(得分:0)

a标记元素执行getText()。我总是喜欢在xpath上使用css。所以这是我的解决方案,

By byCss = By.cssSelector("#accordian>ul>li>ul>li>a");

List<WebElement> listElement = driver.findElements(byCss);

for(WebElement list: listElement)
{
  System.out.println(list.getText());
}

答案 1 :(得分:0)

我遇到了同样的问题并且在几天内挣扎了。您也可以使用href标记来获取元素。您也可以尝试使用'a'标签。它将是这样的:

List<WebElement> listelement=driver.findElements(By.xpath("//div[@id='accordian']/ul/li/ul/li/a"));

for(WebElement list: listelement) {
  String name= list.getAttribute("href");
  System.out.println(name);
 }

答案 2 :(得分:0)

---应该发表评论,但没有足够的声誉---

我在给定的HTML上尝试了你的解决方案,

对我来说它适用于chromedriver和firefox。(从列表中打印所有四个值)

对于InternetExplorer驱动程序我无法获取值,但它因为listElement.size()为0

你可以尝试

element.getAttribute("value") or elem.getAttribute("innerHTML");

检查这里发生了什么。

答案 3 :(得分:0)

+---+--------+
|   | Winner |
+---+--------+
| 0 | A      |
| 1 | C      |
| 2 | D      |
| 3 | D      |
| 4 | A      |
| 5 | B      |
+---+--------+

只需在xpath的末尾添加一个标记,所有这些都可以正常工作

+---+--------+---+---+---+---+
|   | Winner | A | B | C | D |
+---+--------+---+---+---+---+
| 0 | A      | 1 | 0 | 0 | 0 |
| 1 | C      | 1 | 0 | 1 | 0 |
| 2 | D      | 1 | 0 | 1 | 1 |
| 3 | D      | 1 | 0 | 1 | 2 |
| 4 | A      | 2 | 0 | 1 | 2 |
| 5 | B      | 2 | 1 | 1 | 2 |
+---+--------+---+---+---+---+

答案 4 :(得分:0)

swapnil,你的xpath代码对我有用,我得到了所有4个元素,你还可以试试这个

  List<WebElement> listElements = driver.findElements(By.tagName("a"));
  for(WebElement a : listElements){         
      System.out.println(a.getText());
  }