使用Selenium Python单击SVG

时间:2019-07-17 12:02:51

标签: python selenium svg xpath webdriver

svg图标是可单击的。

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

示例代码:

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()

错误:

  

没有这样的元素:无法找到元素:{“ method”:“ xpath”,“ selector”:“ // * [@ id =” SearchForm“] / div [1] / span / div [1] / div [2] / svg / path“}

2 个答案:

答案 0 :(得分:1)

要对svg图标上的click()使用以下解决方案:

driver.find_element_by_xpath('//div[@class="some-class"]/*[name()="svg"][@aria-label="Search"]').click()

您可以在以下位置找到一些相关的讨论

答案 1 :(得分:0)

“ svg”元素不是来自XHTML命名空间,而是属于SVG命名空间。因此,在构造svg标签的xpath时必须指定name()=“ svg”。 例如 : “ / * [name()='svg'] / * [name()='path']”

供参考,请在下面的讨论中找到 How to click on SVG elements using XPath and Selenium WebDriver through Java