Как уменьшить задержку TypeText в Watin? - PullRequest
6 голосов
/ 27 декабря 2010

Как уменьшить задержку между нажатиями клавиш в методе Ватина TypeText?Есть ли лучший способ, если я хочу «мгновенно» набрать текст?

Ответы [ 4 ]

7 голосов
/ 26 октября 2012

Я знаю, что уже немного поздно, но я мог бы также поделиться этой информацией для тех, у кого есть такая же проблема, которые приземляются здесь, особенно учитывая, что вы попросили пример.

IE browser = new IE();

browser.TextField("UserName").Value = "admin";
browser.TextField("Password").Value = "pass123";

Веселись. Здесь - это хороший пост об альтернативном пути, где я нашел это некоторое время назад.

6 голосов
/ 27 декабря 2010

Ответ на элемент .ClickNoWait(), а затем просто установите его свойство .Value.

Надеюсь, это кому-нибудь поможет.

2 голосов
/ 02 июня 2012
    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();

Для меня просто установка атрибута значения для текстового поля сработала, но это может зависеть от того, как кодируется страница.

0 голосов
/ 18 декабря 2014

Я тоже столкнулся с этой проблемой, и просто щелкнув текстовое поле и установив значение, я вызвал неудачные тесты, потому что в нашем приложении 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() перед установкойvalue.

Запомните строку using Project.Extensions; в начале вашего кода, чтобы включить расширения WatiN.

Теперь вы можете вызывать метод расширения:

TextField field = browser.TextField("id");

field.TypeTextFaster("the text to type");
...