SVG
xpath
selenium-webdriver
webdriverjs

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']"));