Doc
Doc

Reputation: 5266

Find out correct xpath

I have an html page like this:

...
<div class="container">
    <div class="title">Meat</div>
    <div class="someclass">
        <div class="tile AAA">
            <div class="text">AAA</div>
            <img class="image" src="somewhat.jpg" />
        </div>
    </div>
    <div class="someclass">
        <div class="tile BBB">
            <div class="text">BBB</div>
            <img class="image" src="somewhat.jpg" />
        </div>
    </div>
</div>

<div class="container">
    <div class="title">Fish</div>
    <div class="someclass">
        <div class="tile AAA">
            <div class="text">AAA</div>
            <img class="image" src="somewhat.jpg" />
        </div>
    </div>
    <div class="someclass">
        <div class="tile BBB">
            <div class="text">BBB</div>
            <img class="image" src="somewhat.jpg" />
        </div>
    </div>
</div>
...

I need to be able to get selenium click an img for a specific element (for example, i want Meat-BBB's img) but I can't find a way to get it by xpath

Any help will be appreciated...

Upvotes: 1

Views: 212

Answers (4)

RavindraS
RavindraS

Reputation: 67

To make this Xpath more Generic , we can define a string like

// assign the value under which you want to click image Meat or Fish
String classTitle = "Meat";

and chage the xpath as follows:

//div[.='+classTitle+']/following-sibling::*[2]//img")

Upvotes: 0

Vinay
Vinay

Reputation: 754

The xpath will be - yourText //div[div[text()='yourText']]/descendant::img

Upvotes: 0

Juhi Saxena
Juhi Saxena

Reputation: 1217

This will be the xpath for your Meat-BBB's img /html/body/div[1]/div[3]/div/img You can find xpath of any element by following steps.

1. Open your HTML file with any browser 
2. Press F12 and inspect that element by clicking on that element
3. Now right click in html panel on the element and click on Copy XPath

Done! Now you have XPath.

Upvotes: 0

Subh
Subh

Reputation: 4424

This will click on the Meat-BBB's img:

driver.findElement(By.xpath("//div[.='Meat']/following-sibling::*[2]//img")).click();

It finds the 2nd sibling to the div element having text/innerHtml as "Meat", and then traverses to the first "img" element in it.

Upvotes: 1

Related Questions