2010-12-27 15 views
6

Come ridurre il ritardo tra i tasti nel metodo TypeText di Watin? C'è un modo migliore se voglio "istantaneamente" digitare del testo?Come si può ridurre il ritardo del TypeText in Watin?

+0

Giusto per essere chiari, "blog-tipo" post non sono raccomandati. Chiedere domande per rispondere alle domande non è in realtà lo scopo di questo sito. Tuttavia, "ha risposto alla mia domanda" va bene. – jcolebrand

+3

@drachenstern: In effetti ho risposto alla mia domanda e ho deciso di postarlo nel caso in cui qualcun altro si fosse imbattuto nello stesso problema. –

+0

Ho rimosso il tag watir poiché la domanda non è correlata ad esso. –

risposta

6

La risposta è .ClickNoWait() sull'elemento e quindi è sufficiente impostare la proprietà .Value.

Spero che questo aiuti qualcuno.

+0

Posso vedere un esempio in uso? Sto avendo problemi nell'esecuzione. – 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(); 

Per me, è sufficiente impostare l'attributo valore per il campo di testo funzionato, ma potrebbe dipendere da come la pagina è codificata.

7

So che è un po 'in ritardo, ma potrei anche condividere questo po' di informazioni per gli altri che hanno lo stesso problema che atterrano qui soprattutto considerando che hai chiesto un esempio.

IE browser = new IE(); 

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

Buon divertimento. Here è un bel post su un modo alternativo che è dove ho trovato questo tempo indietro.

0

Mi sono imbattuto in questo problema, e semplicemente facendo clic sul campo di testo e impostando il valore causava errori di test perché la nostra applicazione ASP.NET WebForms ha validatori che vengono eseguiti quando si verifica l'evento change. Ecco il codice sorgente per un estensione di 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(); 
     } 
    } 
} 

Se si dispone di gestori di eventi che vengono attivati ​​quando l'utente fa clic sul textfield, basta aggiungere textfield.Click() o textfield.ClickNoWait() prima di impostare il valore.

Ricordare la riga using Project.Extensions; all'inizio del codice per includere le estensioni WatiN.

Ora è possibile chiamare il metodo di estensione:

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

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