如何减少Watin TypeText
方法中按键之间的延迟?如果我想“即时”输入一些文字,还有更好的方法吗?
答案 0 :(得分:7)
我知道它有点晚了,但我可能会分享这些信息,因为其他人遇到同样的问题,特别是考虑到你问了一个例子。
IE browser = new IE();
browser.TextField("UserName").Value = "admin";
browser.TextField("Password").Value = "pass123";
玩得开心。 Here是另一种方式的好文章,这是我在一段时间后发现的。
答案 1 :(得分:6)
答案是关于元素的.ClickNoWait()
,然后设置它的.Value
属性。
希望这有助于某人。
答案 2 :(得分:2)
LoginPage LoginPage = Browser.Page<LoginPage>();
string UserName = ConstVars.UserName;
string Password = ConstVars.Password;
if (LoginPage.UserNameTextField.GetAttributeValue("value") != UserName)
{
LoginPage.UserNameTextField.SetAttributeValue("value", UserName);
}
if (LoginPage.PasswordTextField.GetAttributeValue("value") == null)
{
LoginPage.PasswordTextField.SetAttributeValue("value", Password);
}
LoginPage.ClickLoginButton();
对我来说,只需设置文本字段的value属性,但它可能取决于页面的编码方式。
答案 3 :(得分:0)
我也遇到了这个问题,只是单击文本字段并设置值导致测试失败,因为我们的ASP.NET WebForms应用程序具有在change
事件触发时执行的验证器。以下是WatiN扩展的源代码:
using WatiN.Core;
namespace Project.Extensions
{
public static class WatinExtensions
{
public static void TypeTextFaster(this TextField textfield, string value)
{
textfield.Value = value;
textfield.Change();
}
}
}
如果您有用户点击textfield
时触发的事件处理程序,请在设置值之前添加textfield.Click()
或textfield.ClickNoWait()
。
请记住代码开头的using Project.Extensions;
行,以包含WatiN扩展名。
现在您可以调用扩展方法:
TextField field = browser.TextField("id");
field.TypeTextFaster("the text to type");