背景:
近期在写ui自动化用例时,遇到问题,元素定位不了。初步尝试直接在页面中获取svg中包含元素的xpath,直接利用selenium方法访问,无法捕获到相关元素信息。
self.driver.find_element_by_xpath('//*[@id="app"]/div/div[2]/section/div/div/div[2]/div[4]/div[2]/table/tbody/tr[1]/td[11]/div/svg[1]').click()
解决:
svgelementXpath = "//div[12]/
*[name()='svg']/*[name()='g']/*[name()='g'][2]/*[name()='g'][1]/*[name()='image']"
从svg元素开始,下面的元素都要以 *[name()='svg element'] 这种形式进行编写,selenium在执行的时候才能够捕获到元素信息。
在selenium点击svg形式的页面元素时,不能用普通的driver.find_element_by_xpath(svgelementXpath).click() 的方式进行点击,这样操作执行时会报错误信息。
需要以定义action的形式访问svg的元素信息。
```
from selenium.webdriver import ActionChains
fuweielementXpath = '//*[@id="app"]/div/div[2]/section/div/div/div[2]/div[4]/div[2]/table/tbody/tr/td[11]/div/*[name()="svg"][1]'
svgelem = self.driver.find_element_by_xpath(fuweielementXpath)
action2 = ActionChains(self.driver)
action2.click(svgelem).perform()
```
参考:http://blog.sina.com.cn/s/blog_53f023270101rykh.html