2017-11-02 5 views
1

Ich habe zwei Tasten. Wenn eine Schaltfläche deaktiviert ist, hat die andere nicht. Jetzt möchte ich überprüfen, ob auf der ersten Schaltfläche die Klasse deaktiviert ist, als ich auf die zweite Schaltfläche klicken muss und umgekehrt.Wie kann ich überprüfen, ob die Schaltfläche deaktiviert ist?

Ich versuche mit unten Code, aber es ist immer wieder wahr. Die deaktivierte Klasse wird dynamisch abhängig von der Bedingung hinzugefügt.

if (expect(element(by.css('ul#menu [data-selector="holdInventory"]')) 
.getAttribute('class')).toEqual('disabled')) { 
    console.log('has class'); 
} else { 
    console.log('has not class'); 
} 

Jede Hilfe wird geschätzt.

+0

document.querySelectorAll ('[class = disabled]') https://www.w3.org/TR/selectors/#attribute-selectors – Doomenik

+0

Sein nicht jquery. Es ist angularjs. Ich benutze mit Winkelmesser. –

+0

querySelectorAll ist eine JS-Funktion und hat nichts mit jQuerry zu tun. https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelectorAll – Doomenik

Antwort

6

In Winkelmesser ist alles ein Versprechen. Um eine Operation durchzuführen, müssen Sie sie zuerst auflösen und dann den Klassenwert validieren. Sie können auch nicht gleich verwenden, da ein Element mehreren Klassen zugeordnet werden kann, sodass Sie stattdessen Includes verwenden müssen.

var btn1 = element(by.css('ul#menu [data-selector="holdInventory"]')); 
btn1.getAttribute('class')).then(function(cls) { 
    if(cls.includes('disabled')) { 
    btn1.click(); 
    } else { 
    btn2.click(); 
    } 
}); 
+0

Perfekt !! Es funktioniert –

+0

Kann ich mehr Hilfe fragen? –

+0

Sicher..ich würde gerne helfen – Rakesh

0

Sie die Länge überprüfen kann, ist 1 der Elemente von allen als unten Abfrage

let elements = fixture.debugElement.queryAll(By.css('ul#menu [data-selector="holdInventory"]'); 
expect(elements.length).toEqual(1); ////////////// 
+0

Wie kann ich mit if/else verwenden? –

+0

wie Fixture in angular1 zu importieren? –

+0

if/else wie können Sie ausarbeiten? 'import {ComponentFixture} von '@ angular/testing'' – Aravind

0

Sie können ng-Klasse verwenden Klasse deaktivieren hinzuzufügen dynamisch mit einem gewissen Zustand wie diese

<button ng-class="{'disable' : switchDisable == '1'}"> Disable </button> 
<button ng-class="{'disable' : switchDisable == '0'}"> Not Disable</button> 

Hier switchDisable Ist ein Bereichswert, den Sie bei Klick auf die Schaltfläche wie $scope.switchDisable = 1 umschalten können oder Sie können einen beliebigen anderen Ausdruck verwenden, wie Sie möchten. Referenz: https://docs.angularjs.org/api/ng/directive/ngClass

+0

Es ist perfekt für angularjs. Aber wenn Sie Winkelmesser verwenden, können Sie nicht so verwenden. Ich möchte die Klasse für den Testfall zuordnen. –

Verwandte Themen