2016-09-16 115 views
3

我刚开始使用角度量角器。我写了一个用量角器下面的样本测试如何使用角度-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 control.Is可以通过使用控制名字,像var greeting=element(by.formcontrol('testControl')).sendKeys('john'); 写测试,因为我不想提Id's or names为输入。 你们可以帮我吗。如果我错了,请给我正确的答案。谢谢

回答

1

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

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

这似乎是一个很好的,我...谢谢你 –

+0

嗨,你好,我得到这个错误“失败:找不到使用locator的元素:By(css selector,input [formControl =“name”])“。 –

+0

输入渲染后,它没有formControl属性 – karser

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

这将迫使量角器,然后再继续等待特定元素的页面上的可见性(与超时)。

1

也有这个困难,并获得接受的答案工作。 我结束了创建一个工具方法如下:

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

用法:

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