51

我正在 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');
  });
});
4

6 回答 6

84

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

email.sendKeys('myemail@myemail.com');
password.sendKeys('mypassword');
于 2013-11-25T18:03:21.753 回答
26

您可以使用

email.clear().sendKeys('myemail@myemail.com');
password.clear().sendKeys('mypassword');
于 2015-11-30T10:46:35.510 回答
11

除了shrutiRichard

要确保输入为空或清除,请使用返回Promise的clear方法。在您的输入中使用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');
});
于 2018-06-14T01:12:37.197 回答
1

根据上述答案,您可以在大多数情况下使用 sendkeys 。如果这不起作用,您可以使用 Javascript 将文本注入元素。

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);
于 2019-12-17T06:44:40.293 回答
0

xpath怎么样?

我创建了一个如下所示的按钮:

<ion-input [(ngModel)]="model.password" name="password" type="text" #passcode="ngModel" required>
</ion-input>

并使用设置值

element(by.xpath('//*[@name="password"]/input')).sendKeys('PASSWORD')
于 2020-05-29T17:56:21.413 回答
-1
var searchComment = element(by.name("customTextField"));
searchComment.sendKeys("france").then(function() {
    next()
}); 
于 2017-07-14T09:40:18.920 回答