selenium svg标签定位元素

背景:

近期在写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()

```

获取SVG元素:

WebElement element = driver.findElement(By.xpath(sLocator)); //sLocator like "//*[name()='svg']/*[name()='line'][2]"
点击SVG事件
new Actions(driver).click(element).build().perform();

 

参考:http://blog.sina.com.cn/s/blog_53f023270101rykh.html

你可能感兴趣的:(Selenium)