2017-03-31 4 views
0

Ich habe einen Winkelmesser webElementFinder testElement. Ich möchte nur seine div Kinder (NICHT Enkelkinder oder andere weitere Nachkommen) übereinstimmen und somit testElement.find('div') wird nicht funktionieren, da es alle Nachkommen Divs finden wird.Suche nur Kinder eines Winkelmessers webElementFinder mit CSS

Wenn Winkelmesser wie jQuery gearbeitet (was Sinn machen würde, da Angular klug genug ist jQuery zu verwenden, wenn seine Gegenwart und Transporteur mit kantigem im Verstand errichtet werden), würde ich tun, nur testElement.find(' > div'), die trotz des find Argument funktionieren würden kein Wesen gültiger CSS-Selektor; Da der Winkelmesser jedoch nur eingebaute Element-Funktionen verwendet, ist dieser CSS-Selektor nicht selbst gültig, und der Winkelmesser wirft einen Fehler.

Ich könnte diese Route gehen Angular JS, Protractor locator, get direct children of element seit Xpath nativ können Sie Kinder betrachten, aber ich würde viel lieber CSS als Xpath verwenden.

Antwort

3

Es gibt keine direkte und einfache Möglichkeit, einen direkten Eltern-Kind-Locator vom aktuellen Element zu erhalten. Ein üblicher Weg, es zu lösen, ist die ./ XPath-Ausdruck zu verwenden, aber es gibt auch das „Hack“, das verwendet locator():

testElement.$(testElement.locator().value + ' > div'); 
+1

Wählen Sie dies als die Antwort, da es vermeidet, den Selektor zu wiederholen (dh es folgt DRY). –

2

Verwenden Sie einfach:

$('testElement > div') 
0

Die Lösung hängt von ein paar Dinge :

  1. wenn ein Testelement ElementFinder (const testelement = element(by.css('.some-selector'))) ist, dann können Sie testelement.all(by.css('div')) tun. Beachten Sie die all, weil Sie über children sprechen, finden Sie alle Kinder mit allen. Es wird wieder eine ElementArrayFinder finden Sie in der docs
  2. wenn Testelement einen Selektor (const foo = '.testElement') ist, dann können Sie $$('.testElement > div') tun. Dies wird wieder die ganze Es wird eine ElementArrayFinder finden Sie in der docs

kehre ich hoffe, dass Sie die Auswahl mit testElement zu der CSS-Selektor mit dem > hinzufügen können, der Vorteil, den Sie von diesem erhalten wird, ist, dass Sie Holen Sie sich alle Elemente, die eine direkte Kinder des testElement-Selektor sind