I have the following HTML:
<div id="imageholder> <svg> <g> <image href='blah.gif'> </g> </svg> </div>
And I cannot seem to locate the svg with selenium IDE on firefox at all. I have tried:
//svg //svg:svg //*[name()='svg'] //*[namespace-uri()='http://www.w3.org/2000/svg']
None of them can locate my svg element. Sometimes I get the error:
error = TypeError: e.scrollIntoView is not a function
I'm using this as a means to use the locator in JUnit 4 testing if that helps.
To create a xpath for a svg element, we have the syntax as //*[local-name()='svg']. Here, data-icon is an attribute of the svg tag element which is added accompanied with @ symbol. The [local-name()='path'] is included since it is the child of the svg tagname.
We can click on elements with an SVG using XPath in Selenium. The SVG element has the tag name svg. It has attributes like width, height, viewBox, and so on. To click the element with svg, we should identify the element then utilize the Actions class.
SVG stands for Scalable Vector Graphics. It is mainly used for vector-type diagrams like bar charts, pie charts, scalable icons, scalable logos, and other design diagrams. An SVG viewer is used to render the elements. Usually, SVG elements are not captured by the selenium IDE.
Try the following XPath expression:
//*[local-name() = 'svg']
(works at least from Chrome/FireBug console, haven't tried with Selenium yet)
The question is about xPath, but if you can use CSS Selectors, that would be more readable, like so (Java).
WebElement image = driver.findElement(By.cssSelector("#imageholder > svg > g > image"));
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With