2016-04-04 4 views
1

html:XPath in Chromkonsole arbeiten, aber nicht in Winkelmesser Skript

<div class="view doc"> 
    <div class="view-doc-heading-dec mt10 ng-binding" id="docSummaryHeader"> Document Title </div> 
    <div class="view-doc-inner mt11 ng-binding" id="docBodyHeader"> 
</div> 

Ich will 'Document Titel' in oben genannten Elemente mit XPath abzurufen:

$x('//*[@id=docSummaryHeader]')[0] 

Werke in Chromkonsole

aber

element(by.xpath('//*[@id=docSummaryHeader]')) 

in Winkelmesser nicht erlaubt [0]

Wenn ich

element(by.xpath('//*[@id=docSummaryHeader]')) 

verwenden es mehrere Elemente in der aktuellen HTML-

+0

nicht zulässig [0] ": bitte expand: gibt es einen Fehler (was für ein Fehler?) Oder etwas anderes? – Richard

+0

Element (by.xpath ('// * [@ id = docSummaryHeader]')) gibt Fehler: Fehler: Kann die Eigenschaft 'findElementOverride' von undefined nicht lesen und $ x ('* * [@ id = docSummaryHeader]') in der Chrome-Konsole gibt mehrere Ergebnisse im obigen Code als 1. Dokumenttitel, Titel, Körper –

+0

Diese Information muss in der Frage sein: bearbeiten zu ändern – Richard

Antwort

0

Finden all elements und erhalten die gewünschte durch Index gibt:

element.all(by.xpath('//*[@id="docSummaryHeader"]')).get(0); 

oder:

element.all(by.xpath('//*[@id="docSummaryHeader"]')).first(); 

Oder können Sie die XPath-Indizierung (1-basiert) verwenden:

element(by.xpath('//*[@id="docSummaryHeader"][1]')) 
+0

Vielen Dank Herr Richard, Keith und Alecxe für Ihre Hilfe. element.all (by.xpath ('// * [@ id = "docSummaryHeader"]')). get (0); Perfekt für mich gearbeitet ... –

0

Eigentlich XPath brauchen Sie nicht hier:

$$('#docSummaryHeader').first(); 

statt mit CSS-Selektor in Betracht.

+0

Ich probierte element.all (by.css ('[$$ (' docSummaryHeader ')]')). First() jedoch fehlschlägt mit Fehlermeldung Syntaxfehler mit fehlenden) nach Argumentliste . und mit element.all (by.css ('[$$ (docSummaryHeader)]')). erster() ungültiger Selektor. element.all (by.css ($$ ('docSummaryHeader'))). gibt die maximale Call-Stack-Größe überschritten. –

+0

@SandeepLohar nein nein nein, es ist viel einfacher. Nur 'var firstHeader = $$ ('# docSummaryHeader'). First(); ' element.all (by.css ...) wird nicht benötigt. $$ - ist äquivalent zu element.all (by.css ('')); Überprüfen Sie dies - http://www.protractortest.org/#/api?view=build$$ – Xotabu4

+0

Danke Xotabu4, Fehler mit dieser Anweisung behoben, aber es ergibt sich anders als erwarteten Wert. Sowieso. Xpath arbeitet für jetzt. –

Verwandte Themen