it-swarm.com.de

(Winkelmesser) Prüfen, ob eine Eingabe beim Klicken deaktiviert ist?

Ich habe zwei Eingabefelder, Benutzername und Passwort und einen Drehknopf. Wenn ich auf diesen Drehknopf klicke, werden diese beiden Eingabefelder deaktiviert und ich werde zu einer anderen Seite weitergeleitet. Ich schreibe einen End-to-End-Test, um zu prüfen, ob diese Eingabefelder deaktiviert sind.

element(by.model('username')).sendKeys('rabi');                   
element(by.model('password')).sendKeys('rabi');                   

/* click on spin button */
spinBtn = element(by.className('call-to-action'));                               
spinBtn.click(); 

/* check if input is disabled */
var loginInput = element(by.id('login-username'));                               
expect(loginInput.isEnabled()).toBe(false);
20
rabishah

Das vorige Beispiel von

expect(loginInput.getAttribute('disabled')).toEqual('disabled');

Funktioniert nicht zum Überprüfen, ob etwas aktiviert ist.

Du solltest benutzen

expect(loginInput.isEnabled()).toBe([true|false]);

um genau zu prüfen, ob etwas aktiviert/deaktiviert ist.

Wenn das für Sie nicht funktioniert, ist wahrscheinlich noch etwas anderes los.

58
Taylor Rose

Sie können die Get-Attribut-Methode verwenden:

expect(loginInput.getAttribute('disabled')).toEqual('disabled');
1
Bastien Caudan

Ich möchte hinzufügen, dass die Antwort von @ TaylorRose (die am meisten gewählte Antwort) sehr gut ist, und danke ihm dafür.

// passes when the button does not have 'disabled' attribute
expect($('#saveChangesBtn').isEnabled()).toBe(true);

Als ich jedoch versuchte, das auszuführen, bekam ich einen Fehler:

 Error: TSError: ⨯ Unable to compile TypeScript e2e/specs/element.e2e-spec.ts: 
  Argument of type 'false' is not assignable to parameter of type 'Expected<Promise<boolean>>'.

Es gibt mehrere Lösungen für dieses Problem, und hier sind zwei davon:

1.Schicken Sie Ihre Erwartung, "any" einzugeben 

expect<any>($('#saveChangesBtn').isEnabled()).toBe(true);

2. Fügen Sie @ types/jasminewd2 zu Ihrem Paket json hinzu (und führen Sie 'npm install' natürlich aus) (dank aktraore @ github )

 "devDependencies": {
    ...,
    "@types/jasminewd2": "2.0.6",
    ...
   }

Und dann keine weiteren Fehler von TypeScript und es löst dieses Problem. Ps. Version 2.0.6 ist die neueste zum Zeitpunkt des Schreibens dieses Beitrags und die magische Version könnte für Ihren Fall anders sein.

Das ist also eine Ergänzung zu der am besten bewerteten Antwort, wenn hier jemand dieses Problem hat.

0
Combine