2017-11-18 3 views
0


Ich habe auf viele verschiedene Beispiele gesucht, wie man eine Tabelle iteriert.Winkelmesser finden einen bestimmten Wert innerhalb der Klasse

Wenn ich Code unten für Selen verwende, bekomme ich genau das, was ich will.

driver.findElement(By.xpath("//td[contains(.,'Apple Pomace')]")); 

obwohl würde Ich mag stattdessen den Code zu wiederholen und den Wert unter finden:

<td class="ng-binding">Apple Pomace</td> 

Hinweis gibt es Apfeltrester an zwei Stellen

See image

Da ist mein Tisch:

<div class="col-md-8 col-md-offset-2 col-sm-10 col-sm-offset-1"> 
    <h3 ng-show="searchQuery" class="page-header page-header-sm"><span translate="TITLE_SEARCH_RESULTS" class="ng-scope">Search Results</span> <span class="label label-default ng-binding" ng-bind-html="searchQuery">Apple Pomace</span></h3> 
    <h3 ng-show="!searchQuery" class="page-header page-header-sm ng-scope ng-hide" translate="TITLE_ALL_PRODUCTS">All Products</h3> 

    <div class="alert-info ng-hide" ng-show="confirmation"> 
     <p class="ng-binding"></p> 
    </div> 

    <table class="table table-striped table-bordered table-condensed"> 
     <tbody><tr> 
      <th translate="LABEL_IMAGE" class="ng-scope">Image</th> 
      <th translate="LABEL_PRODUCT" class="ng-scope">Product</th> 
      <th translate="LABEL_DESCRIPTION" class="ng-scope">Description</th> 
      <th translate="LABEL_PRICE" class="ng-scope">Price</th> 
      <th></th> 
     </tr> 
     <!-- ngRepeat: product in products --><tr data-ng-repeat="product in products" class="ng-scope" style=""> 
      <td><img src="/public/images/products/apple_pressings.jpg" class="img-responsive img-thumbnail" style="width: 200px" ng-click="showDetail(product.id)"></td> 
      <td class="ng-binding">Apple Pomace</td> //here is the item I want to fetch 'Apple Pomace' 
      <td><div ng-bind-html="product.description" class="ng-binding">Finest pressings of apples. Allergy disclaimer: Might contain traces of worms. Can be <a href="/#reccyle">sent back to us</a> for recycling.</div></td> 
      <td class="ng-binding">0.89</td> 
      <td> 
       <div class="btn-group"> 
        <a class="btn btn-default btn-xs" ng-click="showDetail(product.id)"><i class="fa fa-eye"></i></a> 
        <a class="btn btn-default btn-xs ng-hide" ng-click="addToBasket(product.id)" ng-show="isLoggedIn()"><i class="fa fa-cart-plus"></i></a> 
       </div> 
      </td> 
     </tr><!-- end ngRepeat: product in products --> 
    </tbody></table> 

</div> 

Ich habe folgenden Code gemacht, aber es ist meiner Meinung nach nicht korrekt.

element.all(by.css('.ng-binding')).each(function(element, index) 
      { 
      element.getText().then(function (text) 
      { 


      }); 
      }) 

Mitteilung Ich habe ‚Apfeltrester‘ an zwei Stellen, deshalb es ist wichtig durch die td-Klasse ‚ng-Bindung‘ iterieren.

Könnte mir jemand helfen

Danke im Voraus

Antwort

0

Im Fall, wenn Sie wollen einfach nur die td zugreifen Sie diese verwenden können:

element(by.cssContainingText('.table td', 'Apple Pomace')) 

Im Fall, wenn Sie filtern möchten die Zeilen in der Tabelle durch das Produkt und erhalten Sie das Element, das Sie unter Code-Schnipsel verwenden können:

element.all(by.repeater('product in products')).filter(function(elem, index) { 
    return elem.element(by.cssContainingText('td', 'Apple Pomace')).isPresent(); 
}).first(); 
+0

wenn ich versuche t Der letzte Code-Ausschnitt Ich bekomme Element ist keine Funktion. –

+0

das ist, weil 'by.repeater()' für 'element.all()' ... gemacht wird, mit 'element.all (by.repeater (...') und es wird funktionieren. –

+0

Ja, mein Fehler, ich habe aktualisiert der Code .. bitte versuchen Sie es jetzt – Rakesh

Verwandte Themen