Protractor testing: How to set the value of text elements in a login form?

懵懂的女人 提交于 2019-12-18 12:10:07

问题


I am writing tests in Protractor for an Angular app. I want to fill out a login form and submit it.

How can I do this? I have got this far, but I don't know how to set the value of the email and password fields.

describe('The dashboard', function() {
  ptor = protractor.getInstance();

  beforeEach(function() {
    ptor.get('#/dashboard');
    var email = ptor.findElement(protractor.By.model('email'));
    var password = ptor.findElement(protractor.By.model('password'));
    var submit = ptor.findElement(protractor.By.tagName('button'));
    // Fill out the form?
    submit.click();
  });

  it('has a heading', function() {
    heading = ptor.findElement(protractor.By.tagName('h1'));
    expect(heading.getText()).toEqual('My Dashboard');
  });
});

回答1:


Just for the benefit of anyone who found this via Google, the answer is:

email.sendKeys('myemail@myemail.com');
password.sendKeys('mypassword');



回答2:


you can use

email.clear().sendKeys('myemail@myemail.com');
password.clear().sendKeys('mypassword');



回答3:


In addition to shruti and Richard,

To ensure the input is empty or cleared, use the clear method which returns a Promise. Resolve the promise with sendKeys method on your input. This is helpful if you have pre-populated your input with default values.

Async/Await:

async fillInEmail() { 
  await email.clear(); 
  email.sendKeys('myemail@myemail.com'); 
}
async fillInPassword() { 
  await password.clear(); 
  password.sendKeys('mypassword'); 
}

ES6:

email.clear().then(() => {
    email.sendKeys('myemail@myemail.com');
});

password.clear().then(() => {
    password.sendKeys('mypassword');
});

Before ES6:

email.clear().then(function() {
    email.sendKeys('myemail@myemail.com');
});

password.clear().then(function() {
    password.sendKeys('mypassword');
});



回答4:


As per above answers , you can use sendkeys in most cases . If didn't work only you can inject the text to the element using a java script .

 var locatorid='datepicker1';
          var val= '12/31/2019';
          //without parameterized
          browser.executeScript("document.getElementById('datepicker1').value= '10/21/2019'");
         //After parameterized
          browser.executeScript("document.getElementById('"+locatorid+"').value= '"+val+"'");
           browser.sleep(3000);



回答5:


var searchComment = element(by.name("customTextField"));
searchComment.sendKeys("france").then(function() {
    next()
}); 


来源:https://stackoverflow.com/questions/20192689/protractor-testing-how-to-set-the-value-of-text-elements-in-a-login-form

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!