如何使用带角度2形状控制的量角器?

时间:2016-09-16 13:30:40

标签: angular protractor

我刚开始使用带角度2的量角器。我已经用

下面的量角器编写了一个样本测试
<input type="text"  id="name">


describe('angularjs homepage', function() {
it('should say my name', function() {
    browser.get('http://localhost:3000/?');
var greeting =element(by.id('name') ).sendKeys('john');
expect(greeting.getAttribute('value')).toEqual('john');
});
});

这很好用。但我正在使用类似这样的表格

<input type="text" [formControl]="testControl" />

我没有在输入控件上提到任何id。是否可以使用控件名称编写测试,例如var greeting=element(by.formcontrol('testControl')).sendKeys('john'); 因为我不想提及输入的Id's or names。 你能帮助我吗。如果我错了,请更正我。谢谢你

3 个答案:

答案 0 :(得分:1)

您可以尝试使用css选择器来定位输入。看看贝尔沃的例子。

element(by.css("input[formControl='testControl']"))

答案 1 :(得分:1)

这可能是因为量角器试图在浏览器可见之前查找元素,就在browser.get()之后。 CSS / XPath选择器通常可以工作,所以试试这个:

describe('angularjs homepage', function() {
it('should say my name', function() {
    browser.get('http://localhost:3000/?');
var EC= protractor.ExpectedConditions;
browser.wait(EC.visibilityOf($('yourElementHere'), 60000);
var greeting =element(by.id('name') ).sendKeys('john');
expect(greeting.getAttribute('value')).toEqual('john');
});
});

这将迫使量角器在继续进行之前等待页面上特定元素(具有超时)的可见性。

答案 2 :(得分:1)

这也有困难,并获得工作的公认答案。 我最终创建了一个实用程序方法如下:

const input = (name: string) => element(by.css('input[ng-reflect-name=\"' + name + '\"]'));

用法:

input('firstName').sendKeys('John');