同一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とか全然詳しく無かったので、初めははまりましたのでご参考まで。