Angular watin 未更新模型
Angular model is not updated by watin
我正在使用 watin
和 specflow
来自动化我的 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();
}
我正在使用 watin
和 specflow
来自动化我的 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();
}