2017-03-20 41 views
1

私はwatinspecflowを使用して、angularアプリケーションのブラウザテストを自動化しています。角度モデルの値を更新しないTextField.TypeText("some string")関数で問題に遭遇しました。次のように角度モデルがWatinによって更新されていません

サンプルコードは次のとおりです。

public void updateTextField(string value) 
    { 
     GetTextField.TypeText(value); 

     UpdateButton.Click(); 
    } 

    public TextField GetTextField 
    { 
     get { return TextField(Find.ById(_textFieldId)); } 
    } 

    public Button UpdateButton 
    { 
     get { return Button(Find.ById(_updateButtonId)); } 
    } 

私は角モデルが更新されません。ただし、テキストがブラウザで入力され、テキストフィールドに入力した値は無視されて見ることができます。

私はすでに変更されたとマークされる入力フィールドを試してみて、強制的に

GetTextField.Change(); 
GetTextField.TriggerEvent("onchange"); 

を追加しようとしています。私は同様の問題を選択ドロップダウンと同様に持っていた。しかし、ラジオボタンは正常に動作するようです。

ご協力いただければ幸いです。ありがとう。

答えて

1

私は、TextField::TypeText()関数が要素のchangeイベントをトリガーしないことを知りました。したがって、角モダルは更新されません。私は仕事をするTextFieldメソッドの拡張を書いた。次のように

/// <summary> 
    /// Type text and trigger change in the input field 
    /// </summary> 
    /// <param name="textField"></param> 
    /// <param name="text"></param> 
    public static void SendKeys(this TextField textField, string text) 
    { 
     textField.TypeText(text); 
     TriggerChange(textField); 
    } 

    /// <summary> 
    /// Trigger change on the input element 
    /// </summary> 
    /// <param name="element">Element to trigger change on</param> 
    private static void TriggerChange(Element element) 
    { 
     string script = String.Format(
      "$('[name={1}]').change()", 
      element.Name 
     ); 

     element.DomContainer.RunScript(script); 
    } 

、私はそれを使用しています:

public void updateTextField(string value) 
{ 
    GetTextField.SendKeys(value); 

    UpdateButton.Click(); 
} 
関連する問題