2016-05-10 15 views
3

私は角型のプロジェクトでは、形式が http://angular-formly.com/#/で、Protractorを使って終了時のテストを追加したいと考えています。角型の分度器の使用

フォームフィールドがテンプレートではなくコードに定義されているため、モデルが要素を選択できません。また、レンダリング時に異なるモデルが得られ、かなりクラスが追加されたくありません大きなフォーム。

Formlyでレンダリングされたフォームをテストしてテストする方法はありますか?

var formlyInputs = $$("input"); 

var desiredModel = "modelName"; 
var desiredInput = formlyInputs.filter(function (input) { 
    return input.evaluate("model[options.key]").then(function (model) { 
     return model === desiredModel; 
    }); 
}).first(); 

desiredInput.sendKeys("some text"); 

あなたはそれだけではなくinputの要素をサポートするために拡張する必要があるかもしれませんが、他のフォーム要素フォームがあります

答えて

2

1つのオプションは、すべてのformly input要素、evaluateモデル値とfilterを見つけることであろう持ってる。

var label = "Text"; 

var desiredInput = element(by.xpath("//label[normalize-space(.) = '" + label + "']/following-sibling::input")); 
desiredInput.sendKeys("some text"); 
+0

申し訳ありませんworky :)失敗しました::ロケータを使用していません要素:(のxpath、//ラベルにより、[normalize-


別の解決策は、入力の前のラベルに頼ることであろうスペース(。)= 'タイトル']/following-sibling :: input) 両方の方法を試しましたが、投射器がページの要素を見つけることができません。 – vodich

+0

@vodichここに何を追加するかわかりません。ちょうど2つの一般的なアイデアを提供して、あなたの特定のユースケースでそれらを動作させるようにします。 「要素が見つかりません」というエラーが発生する理由は複数あります。作業する要素がiframe内にあるかどうかを確認してください。これがタイミングの問題であるかどうかを確認し、 'browser.wait()'を使用する必要があります。 – alecxe

+0

右は、タイミングの問題である可能性があります、病気はtomorowを確認し、あなたに知らせてください。私は1秒間休止していますが、フォームiがかなり大きく、データがさまざまなサービスから来ているので十分ではないかもしれません。 – vodich

関連する問題