Reputation: 13753
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"}
Upvotes: 1
Views: 15843
Reputation: 1
For my case the following worked:
driver.find_element_by_xpath('//div[@class="some-class"]/*[name()="svg"][@aria-label="Search"]').click()
Upvotes: 0
Reputation: 193138
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:
Upvotes: 8
Reputation: 41
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
Upvotes: 4