javascriptangularjsseleniumselenium-webdriverprotractor

Angular + Selenium: Cannot get value from input field


I have written my tests in Protractor and I've used an expect statement:

loginPage.email.sendKeys( params.login.email );
expect(loginPage.email.getText()).toEqual( params.login.email );

However, my test is failing because signUpPage.email.getText() is returning an empty string. I couldn't find what function to call in Selenium's documentation for input field to return the correct value?

In my Protractor.conf file:

 params: {
      login: {
        email: 'user@email.com',
        password: 'blahblah123'
      }

Error in Terminal:

Expected '' to equal 'user@email.com'.

So I'm trying to match that the input of the email field is the same as the email address I've sent through. Any suggestions how to do that in Selenium?


Solution

  • If this is an input field, you need to get the value of the value attribute:

    expect(loginPage.email.getAttribute("value")).toEqual(params.login.email);
    

    Similarly, to apply Saifur's idea here, if you need to wait for the element to contain the desired value, use textToBePresentInElementValue Expected Condition:

    var EC = protractor.ExpectedConditions;
    browser.wait(EC.textToBePresentInElementValue(loginPage.email, params.login.email), 5000);
    

    Note that timeout value (in ms) has to be specified.