2016-10-05 12 views
-2

私はeBayのウェブサイトの「エレクトロニクスのリンクのためのXPathを書き込もうとしますが、そこにまったく同じタグを持つ2つのリンクのように見えると属性います:eBayでWeb要素のXPathを書く方法は?

<a class="rt" _sp="p2057337.m1381.l3250" href="http://www.ebay.com/rpp/electronics">Electronics</a> 

私はこのXPathを使用しています:

**//a[Text()='Electronics'] 

このパスは私に2つのノードを与えています。それ以外は何を使うべきかわかりません。参考のためにFirebugのから取られた添付のスクリーンショットを参照してください:

electronics link

electronics link

答えて

0

の代わりにあなたが直接By.linkText()ロケータを使用することができますXPathを使用。

driver.findElements(By.linkText('Electronics')) //but this will also give you two elements. 

特定のリンクを選択する場合は、以下のようにカスタムxpathを実装する必要があります。

まずリンク

driver.findElement(By.xpath(".//div[@id='navigatonFragment']/descendant::a[normalize-space(text())='Electronics']")); 

セカンドリンク

driver.findElement(By.xpath(".//div[@class='topnavlayer']/descendant::a[normalize-space(text())='Electronics']")); 
+0

も私はこの.//*[@id='navigationFragment']/div//following::td[5]//aを試した上でのXPathでいくつかの誤りがあるように思われます[@ class = 'rt'] [text()= 'エレクトロニクス']うまく動作しますが、代わりにtd [5]を使用したくありません。私はいくつかのことをより具体的にしたいと思います....私はセレンwebdriverで新しい私はすべてのパスの軸を知っているわけではありませんが、あなたの道で使用されている関数を説明すると役に立つでしょうので –

+0

私はいくつかのスペル間違いを修正して再度チェックしました.////[email protected]@= ' navigationFragment '] /子孫:: a [normalize-space(text())='エレクトロニクス '] –

0

は、これらの両方のリンクが動作します:

リンク1:

リンク2:

//td[@data-hover-tracking='p2057337.m1381.l6435']/a[contains(@href,'electronics')] 
関連する問題