Angular watin 未更新模型

Angular model is not updated by watin

我正在使用 watinspecflow 来自动化我的 angular 应用程序的浏览器测试。我 运行 遇到 TextField.TypeText("some string") 函数的问题,它不更新 angular 模型值。

示例代码如下:

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

我可以看到在浏览器中输入的文本,但是 angular 模型没有更新,在文本字段中输入的值被忽略。

我已经尝试添加

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

尝试强制将输入字段标记为已更改。 select 下拉菜单也有类似的问题。但是单选按钮似乎工作正常。

任何帮助将不胜感激。谢谢。

我发现 TextField::TypeText() 函数不会触发元素上的 change 事件,因此 angular 模式不会更新。我为 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();
}