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
  • 151,581
  • 34
  • 225
  • 281
Dev
  • 12,854
  • 16
  • 67
  • 159

3 Answers3

6

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
  • 151,581
  • 34
  • 225
  • 281
3

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
  • 91,441
  • 18
  • 186
  • 284