Question

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

Was it helpful?

Solution

I think that the XPath should be "//ul/li[1]". In selenium the first item is 1, not 0. Look here

OTHER TIPS

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()
(//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.

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() );
  }
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top