2016-07-26 19 views
1

Ich versuche, diese Taste Transporteur wählen:Wie kann dieser Elementknopf mit dem Winkelmesser angeklickt werden?

<button tabindex="-1" type="button" class="btn btn-default pull-left" ng-click="$arrowAction(-1, 0)"> 

<i class="glyphicon glyphicon-chevron-up"> 
</i> 

</button> 

das einzige einzigartiges Element dabei ist ng-click="$arrowAction(-1, 0)"

Nichts, was ich versucht, Werke:

element(by.css("//button[@ng-click='$arrowAction(-1, 0)']")).click(); 
+0

Haben Sie versucht, Ihr eigenes CSS für dieses Element hinzuzufügen? Außerdem sieht es so aus, als ob Sie 'by.css' verwenden, aber angeben und' xpath'. – Pureferret

Antwort

3

//button[@ng-click='$arrowAction(-1, 0)']ist kein gültiger CSS-Selektor. Es sieht tatsächlich so aus, als wäre dies ein XPath-Ausdruck, und Sie wollten by.xpath() Locator verwenden.

Sie können allerdings die teilweise statt Attributprüfung verwenden:

$("button[ng-click*=arrowAction]").click(); 

$ hier ist eine Verknüpfung zum element(by.css(...)), *= bedeutet "enthält".

Oder haben eine genaue Übereinstimmung:

$("button[ng-click='$arrowAction(-1, 0)']").click(); 

Ich mag noch nicht die Ortungstechnik in diesem Fall verwendet, aber, da, was wir haben, ist es wahrscheinlich das Beste, was wir tun können. Wenn Sie den Anwendungscode und die Vorlagen steuern möchten, fügen Sie idealerweise ein aussagekräftiges id, class oder ein benutzerdefiniertes Datenattribut hinzu, um das Element eindeutig zu identifizieren.

+0

Es funktioniert, aber ich bekomme eine Warnung, weil es 4 Tasten mit "arrowAction" gibt. Wenn ich $ benutze ("button [ng-click * = $ pfeilAktion (-1, 0)]") click(); stattdessen bekomme ich einen ungültigen Selektor. – jmd1002

+0

@ jmd1002 Okay, könnten Sie die HTML-Darstellung aller dieser 4 Schaltflächen posten? Willst du den Unterschied sehen? Vielen Dank. – alecxe

+0

............... . Der einzige Unterschied ist der (-1, 1) – jmd1002