Selenium WebDriver Find nth element

13,077

Solution 1

Use [ ] to reference the nth element for instance

WebElement  edit = driver.findElement(By.xpath("(//*[@class='grid']//img)[n]"));

Where n is the element number

Solution 2

Since the html snippet is not a complete view, its unable to advice if the xpath used is right. With what is presented here, could suggest the following to move forward

  1. Try using xpather (firefox plugin) to check if the xpath used returns the right image you are trying to click.
  2. If above condition passes, then there could be timing issues for the image to load before webdriver tries to find it.
Share:
13,077
user1726783
Author by

user1726783

Updated on June 04, 2022

Comments

  • user1726783
    user1726783 about 2 years

    I am kinda stuck in a problem and am not able to fix it I have to access nth image on my page which comes in table inside HTML. I need to click on image to move to next screen respectively for each row

    I have tried various solution provided here but since I am working with findElement(by) syntax I am not able to run my code with those assistances

    My code is:

    public void editUser(String userName)
    {
        System.out.println("in editUser 1");
        int row = getCellRow(table, userName);
        System.out.println("in editUser 2");
    
        WebElement  edit = driver.findElement(By.xpath("//*[@class='grid']/tbody/tr[2]/td[8]/a[1]/img"));
    
        System.out.println("in editUser 3");
        edit.click();
        System.out.println("in editUser 4");
        clickButton(closeButton);
    }
    

    Error is :

    No such element exception. Unable to locate element: {"method":"xpath", selector"://img[@title='User Management'])[2]
    

    Selenium IDE could recognize my element but not selenium web driver ! Please advice

  • Phillip
    Phillip about 8 years
    Does anything look wrong with this locator? I am receiving an unexpected timeout using WebDriverWait. locator = (By.XPATH, '(.//input[@type=text])[1])')