svg icon is clickable.
<div class="some-class">
<svg aria-label="Search" class="some-icon" width="24" height="24" fill="#000" viewBox="0 0 24 24">
<path d="M9.5,...,5 9.5,5Z">
</path>
</svg>
</div>
Sample code:
from selenium import webdriver
driver = webdriver.Chrome(CHROME_DRIVER_LOCATION)
driver.find_element_by_xpath('//*[@id="SearchForm"]/div[1]/span/div[1]/div[2]/svg/path').click()
Error:
no such element: Unable to locate element: {“method”:”xpath”,”selector”:”//*[@id=”SearchForm”]/div[1]/span/div[1]/div[2]/svg/path”}
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
To click() on the svg icon you can use the following solution:
driver.find_element_by_xpath('//div[@class="some-class"]/*[name()="svg"][@aria-label="Search"]').click()
You can find a couple of relevant discussions in:
- How to click on SVG elements using XPath and Selenium WebDriver through Java
- Unable to locate SVG elements through xpath on Kendo UI chart
Method 2
The “svg” elements are not from the XHTML namespace but belongs to SVG namespace. Hence you have to specify name()=”svg” while constructing the xpath for svg tags.
for example :
“/*[name()=’svg’]/*[name()=’path’] “
For your reference , please find below discussion
How to click on SVG elements using XPath and Selenium WebDriver through Java
Method 3
For my case the following worked:
driver.find_element_by_xpath('//div[@class="some-class"]/*[name()="svg"][@aria-label="Search"]').click()
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0