我刚开始使用带角度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
。
你能帮助我吗。如果我错了,请更正我。谢谢你
答案 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');