2016-04-25 7 views
0

同じクラス属性を持つWebページ上に複数のdivがあります。 私は特定のクラス名のために私のページのすべてのdivをチェックして、このdivのそれぞれについてXpathを得る方法を探しています。WebElementのリストclassNameによる検索return Xpath

実は、私はクラス名と私はページ上で持っているどのように多くのdiv確認することができます。

 List<WebElements> test = driver.findElements(By.className("fitter")); 
    int countDiv = test.size(); 

、今、私のすべての要素を取得するためにあなたのアイデアを持っていますかのXpathを一つずつ?または、別のソリューションをお持ちですか?

私のプロジェクトはSeleniumプロジェクトで、私はWebページをテストしています。私のテストはJavaで書かれており、私はWebDriverを使っています。ヘルプ

+0

でしょうか? – Andersson

+0

はい、それです!私はそれが直接by.Xpathを得ることができることを知っているが、問題はdivの数が可変であることである。したがって、毎回それらをすべて取得するユニークな方法は、クラスごとにそれらを取得し、Xpathをローカルのアクションに取得することです。 – MxfrdA

+0

'findElements'メソッドは要素の配列を返す必要があります。なぜ、要素ごとにインデックス固有のセレクタで各要素を呼び出すのはなぜですか? – Andersson

答えて

0

ため

おかげで単純にwebelementsのリストを反復しますか?

List<WebElement> elements = driver.findElements(By.className("fitter")); 
for (int i = 0; i < elements.size(); i++) { 
    WebElement element = elements.get(i); 
    // ... do whatever you need here 
} 

ループ内の各要素のXPathは、あなたが自動的にリスト内の各要素のためのユニークな `XPath`を取得したいわけ

//div[contains(@class, 'fitter')][i] 
+0

ありがとう、しかし、私の問題は、 "あなたがここに必要なものは何でも"です^^それぞれのXパスを取得するには。 element.getXpathや何かできますか? – MxfrdA

+0

一般的に、個々の要素ごとにxpathを抽出する方法はないと思います。しかし、既にクラス名を持っていれば、 'driver.findElement(By.xpath(" // * [contains(@class、 'fitter')] [i] "));' – kanghj91

+0

のように使うことができます。各要素のxpathは '' * * [contains(@class、 'fitter')] [i] "'です。ここでiはループの制御変数です。 divに焦点を当てたいのであれば、それは '' // div [contains(@class、 'fitter')] [i] "' ' – kanghj91