2016-09-16 98 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');