我在Protractor中为Angular应用程序编写测试。我想填写一份登录表格并提交。
我该怎么做?我已经做到这一点,但我不知道如何设置电子邮件和密码字段的值。
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');
});
});
答案 0 :(得分:76)
只是为了通过Google找到这个的人的利益,答案是:
email.sendKeys('myemail@myemail.com');
password.sendKeys('mypassword');
答案 1 :(得分:25)
你可以使用
email.clear().sendKeys('myemail@myemail.com');
password.clear().sendKeys('mypassword');
答案 2 :(得分:9)
要确保输入为空或已清除,请使用清除方法,该方法将返回承诺。使用输入上的 sendKeys 方法解决承诺。如果您使用默认值预填充输入,这将非常有用。
异步/等待:
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');
});
在ES6之前:
email.clear().then(function() {
email.sendKeys('myemail@myemail.com');
});
password.clear().then(function() {
password.sendKeys('mypassword');
});
答案 3 :(得分:0)
根据上述答案,大多数情况下可以使用sendkeys。 如果只行不通,则可以使用Java脚本将文本注入到元素中。
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);
答案 4 :(得分:0)
xpath怎么样?
我创建了一个像下面这样的按钮:
<ion-input [(ngModel)]="model.password" name="password" type="text" #passcode="ngModel" required>
</ion-input>
并使用设置值
element(by.xpath('//*[@name="password"]/input')).sendKeys('PASSWORD')
答案 5 :(得分:-1)
var searchComment = element(by.name("customTextField"));
searchComment.sendKeys("france").then(function() {
next()
});