Protractor测试:如何设置登录表单中文本元素的值

Protractor testing: How to set the value of text elements in a login form?

本文关键字:中文 表单 登录 文本 元素 设置 测试 何设置 Protractor      更新时间:2023-09-26

我正在为Angular应用程序用Protractor编写测试。我想填写一份登录表格并提交。

我该怎么做?我已经走了这么远,但我不知道如何设置电子邮件和密码字段的值。

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

为了任何通过谷歌发现这一点的人的利益,答案是:

email.sendKeys('myemail@myemail.com');
password.sendKeys('mypassword');

您可以使用

email.clear().sendKeys('myemail@myemail.com');
password.clear().sendKeys('mypassword');

除了耸肩和理查德,

要确保输入为空或已清除,请使用clear方法,该方法返回Promise。在您的输入中使用sendKeys方法解析promise。如果您已经用默认值预先填充了输入,这将非常有用。

异步/等待:

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

根据以上答案,在大多数情况下可以使用sendkey。如果不起作用,可以使用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);

xpath怎么样?

我创建了一个如下按钮:

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

并使用设置值

element(by.xpath('//*[@name="password"]/input')).sendKeys('PASSWORD')
var searchComment = element(by.name("customTextField"));
searchComment.sendKeys("france").then(function() {
    next()
});