user1726783
user1726783

Reputation: 71

Selenium WebDriver Find nth element

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

Upvotes: 5

Views: 13689

Answers (2)

so cal cheesehead
so cal cheesehead

Reputation: 2573

Use [ ] to reference the nth element for instance

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

Where n is the element number

Upvotes: 8

Gayathri
Gayathri

Reputation: 136

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.

Upvotes: 2

Related Questions