How to locate a list element (Selenium)?
11,979
Solution 1
I think that the XPath should be "//ul/li[1]"
. In selenium the first item is 1, not 0. Look here
Solution 2
I know this is not as efficient as the other answer but I think it gives you the result.
WebElement element = (WebElement) ((JavascriptExecutor)driver).executeScript("return $('li').first()");
String item = element.getText()
Solution 3
(//ul/li)[1]
This selects the first in the XML document li
element that is a child of a ul
element.
Do note that the expression:
//ul/li[1]
selects any li
element that is the first child of its ul
parent. Thus this expression in general may select more than one element.
Solution 4
Here is how you do it:
List<WebElement> items = driver.findElements(By.cssSelector("ul li"));
if ( items.size() > 0 ) {
for ( WebElement we: items ) {
System.out.println( we.getText() );
}
}
Comments
-
Buras almost 2 years
I have the following list:
<ul> <li> item1 is red </li> <li> item1 is blue </li> <li> item1 is white </li> </ul>
I tried the following to print the first item:
String item = driver.findElement(By.xpath("//ul//li[0]")).getText(); System.out.println(item);
However, I got: NoSuchElementException... I could use a cssSelector but I do not have the id for the ul
-
Ross Patterson about 11 years+1 This is a common problem for programmers trained in C-based languages. XPath counts from 1, not 0.
-
Arran about 11 yearsNot going to downvote this because it will work, but you are playing a dangerous game: you are assuming that jQuery is loaded. jQuery is not a standard.