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

时间:2013-11-25 12:08:25

标签: 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');
  });
});

6 个答案:

答案 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)

除了shrutiRichard

要确保输入为空或已清除,请使用清除方法,该方法将返回承诺。使用输入上的 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()
});