2016-11-08 33 views
1

:このコードでxpathでSeleniumの相対的な要素を明示的に検索する必要があるのはなぜですか?私はセレンのwebdriverを持つのXPathによって要素を探すためにしようとしている

WebElement element1 = driver.findElement(By.id("someID")); 
List<WebElement> xPathElements = element1.findElements((By.xpath("//span[@class='someClass']"))); 

、私はDOM内のクラス=「工ass」を持つすべての要素を取得しています。

「。」を追加した場合のみ。私は感覚がここで何element1

element1.findElements((By.xpath(".//span[@class='someClass']"))); 

下にあるクラス=「工ass」を持つすべての要素を取得するXPath文字列の先頭に?私はfindElementselement1から呼び出したので、デフォルトでは、element1以下の要素を検索する必要があります。なぜ「。」を追加する必要がありますか?

答えて

1

これはセレンとは関係がありません。それはxpathが動作する方法です。

// elem xpathはドキュメント内のどこにでも置いてください。しかし、別の要素または子孫に関連する要素を検索する場合は、 '。'を使用する必要があります。 .//elemのようなドット。

1

. - かかわらず、彼らがどこにあるかの選択に適合する、現在のノードからのドキュメント内のノードを選択していません -

//現在のノードを選択します。現在のノードが指定されていないため、すべての場所を検索します。

したがって.//は、現在のノード内のどこでも検索を意味します。 xpath syntax

-

//span[@class='someClass'] is //span[@class='someClass']

.//span[@class='someClass'] is element1//span[@class='someClass'] 

を参照してください:あなたのケースでは

関連する問題