2010-12-27 11 views
6

Jak zmniejszyć opóźnienie między naciśnięciami w metodzie Watin w trybie? Czy jest lepszy sposób, jeśli chcę "natychmiastowo" wpisać jakiś tekst?Jak można zmniejszyć opóźnienie typu tekstu w Watinie?

+0

żeby była jasność, „blog” typu posty nie są zalecane. Zadawanie pytań podczas odpowiadania nie jest tak naprawdę celem tej witryny. Jednak "odpowiedział na moje własne pytanie" jest w porządku. – jcolebrand

+3

@drachenstern: Rzeczywiście odpowiedziałem na moje własne pytanie i postanowiłem opublikować je na wypadek, gdyby ktoś inny wpadł na ten sam problem. –

+0

Usunąłem tag watir, ponieważ pytanie nie jest z nim powiązane. –

Odpowiedz

6

Odpowiedź dotyczy elementu .ClickNoWait(), a następnie wystarczy ustawić jego właściwość .Value.

Mam nadzieję, że to komuś pomaga.

+0

Czy widzę przykład w użyciu? Mam problem z wykonaniem. – 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(); 

Dla mnie wystarczy ustawić atrybut wartości dla pola tekstowego, ale może to zależeć od tego, jak strona jest kodowana.

7

Wiem, że jest trochę za późno, ale równie dobrze mogę podzielić się tą informacją dla innych, którzy mają ten sam problem, którzy lądują tutaj, biorąc pod uwagę, że prosiliście o przykład.

IE browser = new IE(); 

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

Baw się dobrze. Here to fajny post na alternatywny sposób, w którym to znalazłem jakiś czas temu.

0

Wpadłem również na ten problem, a kliknięcie pola tekstowego i ustawienie wartości spowodowało błędy testowe, ponieważ nasza aplikacja ASP.NET WebForms zawiera walidatory, które są uruchamiane po uruchomieniu zdarzenia change. Oto kod źródłowy rozszerzeniem 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(); 
     } 
    } 
} 

Jeśli masz obsługi zdarzeń, które się uruchamia się, gdy użytkownik kliknie na textfield, wystarczy dodać textfield.Click() lub textfield.ClickNoWait() przed ustawieniem wartości.

Zapamiętaj linię using Project.Extensions; na początku kodu, aby dołączyć rozszerzenia WatiN.

Teraz można wywołać metodę rozszerzenia:

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

field.TypeTextFaster("the text to type"); 
Powiązane problemy