2013-03-03 16 views
5

xpathを使用してWebページを移動しようとしていますが、いくつかの混在した結果が出てきています。これは私が使用していますものです:Selenium WebElement xpath Java

driver.findElement(By.xpath("//div[contains(@class, 'x-grid3-cell-inner x-grid3-col-0')]")); 

実際に素晴らしい作品が、私はこれに、これを実行している問題:私は私のSeleniumテストでそのXPathを実行すると

<div class="x-grid3-cell-inner x-grid3-col-0" unselectable="on">92300</div> 
<div class="x-grid3-cell-inner x-grid3-col-0" unselectable="on">92475</div> 
<div class="x-grid3-cell-inner x-grid3-col-0" unselectable="on">92476</div> 
<div class="x-grid3-cell-inner x-grid3-col-0" unselectable="on">92301</div> 
<div class="x-grid3-cell-inner x-grid3-col-0" unselectable="on">92474</div> 

私は常に最初のdivを取得します。リストの最初のものではない4番目のdiv(92301)またはその他のdivを取得するためにxpathを編集するにはどうすればよいですか?

答えて

8

このXPath (//div[contains(@class, 'x-grid3-cell-inner x-grid3-col-0')])[4]を使用して、4 thdivを取得します。

このXPathを使用し、92301テキストが含まれているdivを検索するには:

//div[contains(text(), '92301')] 
+0

ありがとうございました、キリル!それは素晴らしいですが、時には私が探しているものの前後にユーザーの挿入データがあり、その位置が変わる可能性があります。いくつかの新しいdivがそれの前に書かれている場合、92301とdivを見つける別の方法はありますか? – cbohannon

+0

@ user2055841、私は私の答えを更新しました。ありがとう、mantrid。 –

3

あなたがWebElement.findElements()のいずれかを使用することができます。

driver.findElements(By.xpath(...)).get(3) 

またはXPathを変更します。

driver.findElement(By.xpath("(//div[contains(@class, 'x-grid3-cell-inner x-grid3-col-0')])[4]")); 
+0

ありがとう、mantrid。それは非常に便利です。それは私が何をしたのかを私に知らせる。また、私が後にしていることが常にポジション4にあるとは限りませんので、これを行うためのよりダイナミックな方法を探し続けるつもりです。 – cbohannon

関連する問題