2016-04-13 35 views
0

ここでは、テストする要素を含むコードを示します。selenium webdriverを使用してXpathから数値を抽出する方法

<div class="title ng-binding">  104 Alerts      </div> 
<ul role="menu"> 
<!-- ngRepeat: category in categories --> 

<li class="ng-scope" role="menuitem" ng-click="showAlerts(category.name)" ng-repeat="category in categories" style=""> 
    <span class="cat-name ng-binding">conservation </span> 
    <div class="count ng-binding">44</div> 
</li> 
<!-- end ngRepeat: category in categories --> 
<li class="ng-scope" role="menuitem" ng-click="showAlerts(category.name)" ng-repeat="category in categories"> 
    <span class="cat-name ng-binding">marketing </span> 
    <div class="count ng-binding">3</div> 
</li> 
<!-- end ngRepeat: category in categories --> 
<li class="ng-scope" role="menuitem" ng-click="showAlerts(category.name)" ng-repeat="category in categories"> 
    <span class="cat-name ng-binding">outstanding delivery requirements </span> 
    <div class="count ng-binding">34</div> 
</li> 

トップエレメントは、合計104アラートがあることを示しています。下の各要素は、特定の種類のアラートです。私は、すべてのアラートサブカテゴリ要素(44,3,34)の値を引き出す必要があり、それらがすべて104になることをアサートします。明らかに、この場合はそうではありません。

+0

これまでに何を試みましたか?私たちがあなたにヒントを与えることができるように、あなたが試みたコードを置くことができますか? – Paras

+0

私の考えでは、driver.findElement(By.xpath( "// * [contains(text、)、 'conservation')]))というgetAttribute(" ??? "しかし、 "44"の値は属性内にないので、値 "44"を抽出する方法はわかりません – dsidler

+0

なぜこのxpathの属性を探していますか?探している数値は 'innerHTML '' class = count ng-binding'の 'div'要素のために'? – Paras

答えて

2

あなたはあなたが以下のように、このクラスを持つすべての要素を見つける必要があるので、最初にすべてのdivclass = count ng-bindingとのinnerHtmlある番号を検索する必要が見ることができるように: -

int total = 0; 
List<WebElement> totalDivs = driver.findElements(By.xpath("//div[@class='count ng-binding']")); 

OR

List<WebElement> totalDivs = driver.findElements(By.className("count")); 

WebElementsがすべて取得されたら、それらを繰り返して追加する必要があります。

for(WebElement we : totalDivs){ 
    total += Integer.parseInt(we.getText()); 
} 
System.out.println(total); 

出力: -

81 // For this example. 

はそれが役に立てば幸い!

+0

'count'と' ng-binding'は** 2つの異なるクラスです - スペースで区切られたリストです。セレクターをBy.className( "count") 'に変更することで、コードを改善することができます。 – SiKing

+0

間違いなく改善することができます! :) – Paras

+0

更新された答え。 – Paras

関連する問題