问题
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