2016-03-30 3 views
2

Ich versuche in meiner Login-Seite des ids mit meinem Eingabefeld zu verwenden, aber ich folgende Fehlermeldung mit Protractor erhalten:-Eingabe-Box mit Elemente by.id Protractor Testing Fehler

Failed: No element found using locator: By css selector, *[id="signin--username"]) 

Hier ist meine Log- in.js

var logIn = function() { 
    this.navigate = function() { 
     browser.get(browser.params.server); 
    }; 
    this.usernameInputBox = element(by.id('signin--username')); 
    this.passwordInputBox = element(by.id('signin--password')); 
    this.dontHaveAnAccountButton = element(by.id('signin--no-account-question')); 

    this.logInButton = element(by.id('signin--log-in')); 
    this.Modal = element(by.css('.modal-dialog')); 
    this.ModalButton = element(by.xpath('//*[@id="app"]/div[3]/div/div/form/div[3]/button')); 
}; 

module.exports = new logIn(); 

Snippet von log-in.html

<div class="form-group"> 
    <div class="input-group input-group-lg"> 
    <span class="input-group-addon"> 
     <span class="glyphicon glyphicon-user"></span> 
     </span> 
      <input type="text" 
      id="signin--username" 
      class="form-control" 
      placeholder="{{'username' | translate}}" 
      ng-model="username" 
      name="username" 
      required 
      autofocus data-autofill 
      > 
    </div> 
</div> 

Protractor Test-Javascript-Datei:

module.exports = function() { 
describe('Login Page', function() { 

    var loginPage = require('../pages/log-in.js'); 
    var saveScreenshot = require('../screenshot.js'); 

    beforeEach(function() { 
     loginPage.navigate(); 
    }) 

    it('should log in (with correct credentials)', function() { 
     browser.waitForAngular(); 
     loginPage.usernameInputBox.sendKeys('service'); 
     loginPage.passwordInputBox.sendKeys('s5rv1c5'); 
     loginPage.logInButton.click(); 
     browser.waitForAngular(); 
     expect(browser.getCurrentUrl()).toContain(browser.params.server + '#/jobs/my_jobs'); 
    }) 

    }); 
}; 

Jede Hilfe sehr geschätzt! Vielen Dank.

Antwort

0

Sie geben den eindeutigen Selektor nicht korrekt an. Deshalb tritt dieser Fehler auf.

Verwenden element(by.model('username')).sendKeys('your user name');

Ich gehe davon aus, dass Sie den HTML-Code Login Textfeld gibt.

Hoffe, das hilft. :)

+0

Wenn ich es auf deine Weise zu tun, ich hätte bearbeiten und zu ändern, um eine Menge Code um . Kann ich meinen eigenen Code wie oben beschrieben ändern? Ich habe oben bearbeitet, um meine Winkelmesserprüfungsdatei einzuschließen. Prost! –

1

Sieht aus wie ein Timing-Problem. Verbessern navigate Seite Objektmethode warten, um auch für die Seite zu laden - Warten auf das Feld Benutzername to become present:

var logIn = function() { 
    this.usernameInputBox = element(by.id('signin--username')); 
    this.passwordInputBox = element(by.id('signin--password')); 
    this.dontHaveAnAccountButton = element(by.id('signin--no-account-question')); 

    // ... 

    this.navigate = function() { 
     browser.get(browser.params.server); 

     var EC = protractor.ExpectedConditions; 
     browser.wait(EC.presenceOf(this.usernameInputBox), 5000, "Username field is still not present"); 
    }; 
}; 
+0

Versucht es, aber ich bekomme immer noch den gleichen Fehler: –

+0

Und ich bekomme auch diesen Fehler: Benutzername Feld ist nicht vorhanden, Warten Sie nach 5010ms –

+0

@WebTech ist diese Form in einem Iframe/Rahmen? – alecxe

Verwandte Themen