Ich benutze Winkelmesser für Ende-zu-Ende-Tests einer Angular 2-App (und ich lutsche bei CSS).Wie wählt man alle Elemente aus, die KEIN Kind mit einer bestimmten Klasse haben?
Ich stecke fest, alle Elemente zu wählen, die kein (div) Kind mit einer bestimmten Klasse haben. Sie können div Kinder haben, nur keine mit dieser Klasse.
Die einzelnen Elemente aussehen (mehr oder weniger) wie folgt aus:
<div class="card"
(click)="clickEvent.emit(generator.id)">
<div id="card-title-anchor">
<div class="card-img-top">
<img src="{{generator.imageUrls.small}}">
</div>
<div *ngIf="!canFulfillAAC()" class="sold-overlay">
<p>bla</p>
</div>
<div class="col-3 price-overlay">
<p class="big-price">
bla
</p>
</div>
</div>
</div>
Ich kann mit element.all(by.css('.card'))
alle ".card
" Elemente erhalten.
Aber wie bekomme ich nur diejenigen, die kein Kind div mit der sold-overlay
Klasse enthalten?
BEARBEITEN: Ich entfernte die CSS-Tags. Ich interessiere mich hauptsächlich dafür, wie man dies mit Winkelmesserlokalisierern erreicht - sei es durch einen CSS-Selektor, einen Xpath-Ausdruck oder auf andere Weise.
Mit CSS ... Sie können nicht (** abgegeben **). Es gibt kein CSS [** Elternauswahl **] (http://stackoverflow.com/questions/1014861/is-there-a-css-parent-selector) –
In CSS gibt es wirklich keine Elternselektoren. CSS wird _abwärts (und angrenzend) durch das DOM _cascade_ ... aber nicht nach oben. Was es klingt wie du willst, ist _hey CSS, finde alle divs, die dieses Kind nicht haben, dann gehe zurück und style dieses parent_, was bedeuten würde, dass du nach oben gehen müsstest. Wahrscheinlich müssen Sie Javascript verwenden, um Ihr Problem zu lösen. – zgood
Wie oben erwähnt, würde ich Javascript verwenden, um der Karte div eine zusätzliche Klasse zuzuweisen. Da diese Klasse nur für die Auswahl in Winkelmessern verwendet werden würde, würde ich ein Präfix wie "protractor-" verwenden, damit klar ist, dass es nur für Tests da ist. – chrigu