How to find an image tag by filename using xpath

22,424

You don't need any matches function. Use:

//img[@src='my_image.png']

Or, if the path can include text before the portion you want to match:

//img['my_image.png'=substring(@src, string-length(@src) - 11)]

This second expression imitates an ends-with function.

If you don't like hard-coding the substring length, then use:

//img['my_image.png'=substring(@src, 
          string-length(@src) - string-length('my_image.png') + 1)]

For completeness: in some cases, the following is acceptable:

//img[contains(@src, 'my_image.png')]
Share:
22,424
Macario
Author by

Macario

Updated on April 21, 2020

Comments

  • Macario
    Macario about 4 years

    I am running some cucumber features using capybara and I need to check if a certain image is being shown.

    I tried this xpath match but apparently the function matches is not available:

    //img[matches(@src, "my_image.png")]
    
  • Macario
    Macario about 13 years
    Thanks, I've used contains since it wasn't an exact match.
  • Derek Prior
    Derek Prior almost 13 years
    Thanks. Been looking all over for a list of xpath functions capybara supports. I was banging my head trying to figure out why my ends-with matcher doesn't work. Do you have a list of supported functions?