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() );
  }
}
Share:
11,979
Buras
Author by

Buras

Oracle DBA

Updated on June 16, 2022

Comments

  • Buras
    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
    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
    Arran about 11 years
    Not 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.