2016-11-07 4 views
-1

Wie finden Sie alle Elemente, die in Protractor ein bestimmtes benutzerdefiniertes Attribut haben? Ich habe ähnliche Fragen zu Stackoverflow und on net gefunden, aber sie benutzen xpath, was Einschränkungen für das Tag bedeutet.Suchen nach einem Element durch ein vorhandenes Attribut

element(by.xpath('//div[@custom-attribute]')) 

Wie zu widersetzen, obiges Beispiel, ich habe keine Beschränkung auf Tag setzen will, da wir verschiedene Tags mit dem gleichen benutzerdefinierten Attribute haben. Ich möchte alle Elemente mit dem Attribut unabhängig vom Tag suchen. Ist das möglich?

+2

Können Sie nicht etwas wie 'document.querySelectorAll ('div [attribut]')' '? – Cerbrus

+0

Da dieses benutzerdefinierte Attribut nicht nur für div-Elemente definiert ist, sondern auch für Schaltflächen, Hyperlinks und andere Tags, bin ich mir nicht sicher, ob das möglich ist. ..unless Ich habe diese Anweisungen für alle anderen Tags. – user30646

+1

Also? Lass das "div" einfach weg. – Cerbrus

Antwort

4

können Sie verwenden ein CSS selector locator:

element.all(by.css('[custom-attribute]')); 

Oder über die $$ Abkürzung

$$('[custom-attribute]'); 

[custom-attribute] ein attribute selector ist, dass jedes Element mit custom-attribute Attribut übereinstimmen würde.

+0

Konnte das Ergebnis eines gewöhnlichen 'querySelectorAll' nicht an' element.all() 'übergeben werden? Oder irre ich mich in der Annahme, dass dort die native JS-Funktionalität verfügbar ist? – Cerbrus

+0

@Cerbrus Ja, es gibt keinen * "direkten" * Zugriff auf 'querySelectorAll()', aber Sie können das theoretisch über ['executeScript()'] (http://www.protractortest.org/#/api? view = webdriver.WebDriver.prototype.executeScript) oder in einem benutzerdefinierten Locator - einige der butt-in-Winkelmesserlokatoren verwenden intern 'querySelectorAll', zB' 'by.repeater()' ([source] (https://github.com/angular/protractor/blob/7da9c3a910bb000b30bf9ba82ef48c64bd751709/lib/clientsidescripts.js#L177)). Danke, gute Frage (habe deine Antwort nicht abgelehnt). – alecxe

+0

Ich war bei der -3 irgendwie überrascht. Aber da dies die "native" Abfrageauswahlmethode des Winkelmessers ist, ist dies die bessere Antwort. – Cerbrus

Verwandte Themen