地方移住を夢見る自動化エンジニアのブログ

地方移住を夢見ている、QAエンジニア(自動化エンジニア)のブログ

同一Xpathの順番(何個目)を指定するための簡単な方法

SeleniumWebDriverでXpathを指定する際に、同一HTML内に同じ階層に同じタグが存在することってよくありますよね?

例えば、はてなブログ内で同一タグの一覧を開いている場合に、タグの一番目の”QAエンジニア”のテキストを指定したい場合とか。

Xpathをフルパスで指定すればいいといえばいいんですが、汎用性に欠けるので、一番短いXpathで書きたいなと。そんな場合に私が使っているXpathの指定方法です。

  • HTMLの例
<div>
<a href="http://autotestengineer.hatenablog.com/archive/category/QA%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2">QAエンジニア</a>
<a href="http://autotestengineer.hatenablog.com/archive/category/QA%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2">QAエンジニア</a>
</div>
  • 指定方法
driver.findElement(By.xpath("(//a[text()='QAエンジニア'])[1]"));

自分がつまづいたポイントとしては、
//a[text()='QAエンジニア']
ではなく、
(//a[text()='QAエンジニア'])[1]
Xpath全体を()で括ってその外に[1]と添字を付けてあげるところでした。

Xpathとか全然詳しく無かったので、初めははまりましたのでご参考まで。

地方移住を夢見る自動化エンジニアのブログ