如何减少Watin中的TypeText延迟?

时间:2010-12-27 01:39:23

标签: c# watin

如何减少Watin TypeText方法中按键之间的延迟?如果我想“即时”输入一些文字,还有更好的方法吗?

4 个答案:

答案 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");