Edited at

Selenium WebDriver SVG要素をxpathで取得する方法

More than 1 year has passed since last update.


間違った取得方法

WebDriver::By.xpathでSVGを取得する時、SVGはDIV要素等と違って以下のように取得することができません


要素名で取得

driver.findElement(By.xpath("//svg"));


ただし、以下のように全称セレクタを使用してidで取得することは可能です。


全称セレクタ+idで取得

driver.findElement(By.xpath("//*[@id='test']"));


しかし、一般的に各SVGにidが付与されているケースは少ないのであまり有効ではありません。


正しい取得方法

次のようにname Functionを使用することでQNameとして要素を取得することができます。


svg要素を取得

driver.findElement(By.xpath("//*[name()='svg']"));


gやpath要素も同様に取得可能です。


path要素を取得

driver.findElement(By.xpath("//*[name()='svg']//*[name()='g']//*[name()='path']"));