1

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"}

undetected Selenium
  • 183,867
  • 41
  • 278
  • 352
Dev
  • 13,492
  • 19
  • 81
  • 174

3 Answers3

8

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:

undetected Selenium
  • 183,867
  • 41
  • 278
  • 352
4

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

0

For my case the following worked:

driver.find_element_by_xpath('//div[@class="some-class"]/*[name()="svg"][@aria-label="Search"]').click()
dbc
  • 104,963
  • 20
  • 228
  • 340