背景:
近期在寫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