Xpath

2016-04-13 21 views
0

'dan sayısal değerleri çıkarmak için selenyum webdriver nasıl kullanılır Test etmek için gereken öğeleri içeren kod aşağıdadır.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> 

Üst öğe bize toplam 104 Uyarı olduğunu söylüyor. Aşağıdaki her öğe belirli bir uyarı türüdür. Tüm uyarı altkümesi öğelerindeki (44, 3, 34) değerleri çıkarmam ve bunların hepsinin 104'e kadar uzandığını iddia etmem gerekiyor. Açıkçası bu durumda değiller.

+0

Şimdiye kadar neler denediniz? Kodunuzu koyduklarını, böylece size bir ipucu verebilelim. – Paras

+0

Aklımda böyle bir şey çalışıyor ... driver.findElement (By.xpath ("// * [içerir (metin(), 'koruma')]")) getAttribute ("???"); Ama "44" değeri bir öznitelik içinde değil, bu yüzden "44" değerini nasıl çıkaracağımı bilmiyorum. – dsidler

+0

neden bu xpath'in özniteliğini arıyorsunuz, Aradığınız numara "innerHTML" dir. '' div' öğesi için 'class = count ng-binding' ile? – Paras

cevap

2

sen aşağıda bu sınıfın tüm unsurları bulmak gerekir bu yüzden her şeyden önce divclass = count ng-binding ile arasında innerHtml olan sayıları bulmalıyız görebileceğiniz gibi: -

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

VEYA

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

WebElements'u aldıktan sonra, bunları yinelemeniz ve eklemeniz gerekir.

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

Çıktı: -

81 // For this example. 

yardımcı olur Umut!

+0

'say' ve 'ng-binding '** iki ** farklı sınıftır - boşlukla ayrılmış bir liste. Kodunuz, seçiciyi By.className ("count") 'olarak değiştirerek geliştirilebilir. – SiKing

+0

evet kesinlikle geliştirilebilir! :) – Paras

+0

güncellendi cevap. – Paras