2010-12-27 15 views
6

¿Cómo se puede reducir la demora entre pulsaciones de teclas en el método TypeText de Watin? ¿Hay una mejor manera si quiero escribir "instantáneamente" algo de texto?¿Cómo se puede reducir el retraso de TypeText en Watin?

+0

Para que quede claro, no se recomiendan los mensajes de tipo "blog". Preguntar y responder preguntas no es realmente el propósito de este sitio. Sin embargo, "respondí mi propia pregunta" está bien. – jcolebrand

+3

@drachenstern: de hecho respondí mi propia pregunta y decidí publicarla en caso de que alguien más se topara con el mismo problema. –

+0

He eliminado la etiqueta de watir ya que la pregunta no está relacionada con ella. –

Respuesta

6

La respuesta es .ClickNoWait() en el elemento, y luego simplemente configure su propiedad .Value.

Espero que esto ayude a alguien.

+0

¿Puedo ver un ejemplo en uso? Tengo problemas para ejecutar. – atwellpub

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

Para mí, simplemente estableciendo el atributo de valor para el campo de texto trabajado, pero podría depender de cómo se codifica la página.

7

Sé que es un poco tarde, pero también podría compartir esta información para que otros tengan el mismo problema que aterricen aquí, especialmente si se les pide un ejemplo.

IE browser = new IE(); 

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

Have fun. Here es una buena publicación de una manera alternativa que es donde encontré esto hace algún tiempo.

0

Me encontré con este problema también, y simplemente haciendo clic en el campo de texto y estableciendo el valor estaba causando fallas de prueba porque nuestra aplicación ASP.NET WebForms tiene validadores que se ejecutan cuando se dispara el evento change. Aquí está el código fuente de una extensión a 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(); 
     } 
    } 
} 

Si tiene controladores de eventos que se disparará cuando el usuario hace clic en el textfield, sólo tiene que añadir textfield.Click() o textfield.ClickNoWait() antes de ajustar el valor.

Recuerde la línea using Project.Extensions; al comienzo de su código para incluir las extensiones WatiN.

Ahora se puede llamar al método de extensión:

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

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