2017-01-13 3 views
3

Ich möchte die Anzahl der Tabellenzeilen in Winkelmesser, auf einer Seite, in der Tabellen dieses Typs mehr als einmal erscheinen. Ich habe versucht, den first-of-type Selektor zu verwenden, aber es scheint, beide Tabellen zu fangen, weil sie nicht nebeneinander erscheinen.Holen Sie sich das erste Element in Winkelmesser

Zum Beispiel gegeben HTML:

<div> 
    <table class="foo"> 
    <tr> 
     <th>First row</th> 
     <th>Second row</th> 
     <th>Third row</th> 
     <th>Fourth row</th> 
    </tr> 
    </table> 
</div> 
<div> 
    <table class="foo"> 
    <tr> 
     <th>First row</th> 
     <th>Second row</th> 
     <th>Third row</th> 
     <th>Fourth row</th> 
    </tr> 
    </table> 
</div> 

Und dieses Winkelmesser Code:

element.all(by.css('table:first-of-type tr:first-of-type th')).then(function (elements) { 
    expect(elements.length).toBe(4); 
}); 

Protractor auf dem Gelände versagt, dass es acht Elemente sind und nicht 4. Es scheint den table:first-of-type Selektor Fängt beide Elemente, da sie beide die ersten Kinder ihrer Eltern sind. div Komponenten. Mein Projekt ist so strukturiert, dass es besser ist, keine einzelnen Klassen zu einzelnen Umhüllungen hinzuzufügen div.

Gibt es eine Möglichkeit, das erste Element in Winkelmesser zu finden und dann seine Kindelemente zu suchen?

Antwort

5

Ich habe :first-of-type nicht als css Selektor in Winkelmesser verwendet; jedoch konnte man die firsttable mit allen th ‚s und dann überprüfen, um zu sehen, ob die count ist 4.

expect(element.all(by.css('table')).first().all(by.css('th')).count()).toBe(4); 
3

Sie sicherlich tun können, es die Art und Weise @cnishina vorgeschlagen (und ich würde eigentlich lieber seinen Ansatz über ein langes CSS-Selektor zu machen), aber wenn Sie einen einzelnen CSS-Selektor für dieses Problem fortsetzen mögen, sollten Sie auch die first-of-type (oder first-child) an die Mutter div gelten:

div:first-of-type > table:first-of-type > tr:first-of-type > th 

ich hinzugefügt habe auch die >, um die direkten Eltern-Kind-Beziehungen zu erzwingen.

Verwandte Themen