Reputation: 3099
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
Upvotes: 2
Views: 12492
Reputation: 29669
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() );
}
}
Upvotes: 1
Reputation: 243469
(//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.
Upvotes: 2
Reputation: 1864
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()
Upvotes: 2