量角器测试:如何在登录表单中设置文本元素的值?

Ric*_*ard 43 javascript angularjs protractor

我正在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');
  });
});
Run Code Online (Sandbox Code Playgroud)

Ric*_*ard 77

只是为了通过谷歌找到这个的人的利益,答案是:

email.sendKeys('myemail@myemail.com');
password.sendKeys('mypassword');
Run Code Online (Sandbox Code Playgroud)

  • 请记住,这会将字符串附加到输入中的值,如果您不想追加,只需在发送键之前清除()输入 (16认同)

小智 25

您可以使用

email.clear().sendKeys('myemail@myemail.com');
password.clear().sendKeys('mypassword');
Run Code Online (Sandbox Code Playgroud)

  • 请解释你的答案如何工作或添加答案的基本部分. (2认同)
  • 实际上,clear()返回一个promise,因此,如果您想先清除输入,则应为email.clear()。then(()=> {email.sendKeys('myemail@myemail.com')})); (2认同)

des*_*erd 10

除了shrutiRichard,

要确保输入为空或清除,请使用返回Promiseclear方法.使用输入上的sendKeys方法解决promise .如果您使用默认值预填充输入,这将非常有用.

异步/等待:

async fillInEmail() { 
  await email.clear(); 
  email.sendKeys('myemail@myemail.com'); 
}
async fillInPassword() { 
  await password.clear(); 
  password.sendKeys('mypassword'); 
}
Run Code Online (Sandbox Code Playgroud)

ES6:

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

password.clear().then(() => {
    password.sendKeys('mypassword');
});
Run Code Online (Sandbox Code Playgroud)

在ES6之前:

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

password.clear().then(function() {
    password.sendKeys('mypassword');
});
Run Code Online (Sandbox Code Playgroud)