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());
}
答案 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());
}