Dev
Dev

Reputation: 13753

Clicking on svg using selenium python

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

Answers (3)

Jo&#227;o Maniaudet
Jo&#227;o Maniaudet

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

undetected Selenium
undetected Selenium

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

Naresh Bogam
Naresh Bogam

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

Related Questions