2010-12-27 4 views
6

Wie reduziert man die Verzögerung zwischen Tastendrucken in der TypeText Methode von Wattin? Gibt es einen besseren Weg, wenn ich einen Text "sofort" eingeben möchte?Wie kann die TypeText-Verzögerung in Wattin reduziert werden?

+0

Nur um klar zu sein, "Blog-type" Beiträge sind nicht zu empfehlen. Fragen zu stellen und dann zu beantworten ist nicht wirklich der Zweck dieser Seite. Jedoch "meine eigene Frage beantwortet" ist in Ordnung. – jcolebrand

+3

@drachenstern: Ich habe tatsächlich meine eigene Frage beantwortet und entschieden, sie zu posten, falls jemand anderes in dasselbe Problem geraten sollte. –

+0

Ich habe das watir-Tag entfernt, da die Frage nicht damit zusammenhängt. –

Antwort

6

Die Antwort ist .ClickNoWait() auf dem Element, und dann einfach seine .Value Eigenschaft festlegen.

Ich hoffe, das hilft jemandem.

+0

Kann ich ein Beispiel in Verwendung sehen? Ich habe Probleme beim Ausführen. – 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(); 

Für mich funktionierte einfach das Wertattribut für das Textfeld, aber es könnte davon abhängen, wie die Seite codiert ist.

7

Ich weiß, es ist ein bisschen spät, aber ich könnte genauso gut diese Informationen für andere teilen, die das gleiche Problem haben, die hier landen, besonders wenn man bedenkt, dass Sie nach einem Beispiel gefragt haben.

IE browser = new IE(); 

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

Viel Spaß. Here ist ein schöner Post auf einer alternativen Art und Weise, wo ich diese Zeit zurück gefunden habe.

0

Ich lief auch in dieses Problem, und nur auf das Textfeld klicken und den Wert festlegen verursachte Testfehler, weil unsere ASP.NET WebForms-Anwendung Validatoren hat, die ausgeführt werden, wenn das Ereignis change ausgelöst wird. Hier ist der Quellcode für eine Erweiterung 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(); 
     } 
    } 
} 

Wenn Sie Ereignishandler haben, die ausgelöst werden, wenn der Benutzer auf dem textfield klickt, fügen Sie einfach textfield.Click() oder textfield.ClickNoWait(), bevor der Wert.

Denken Sie an die Zeile using Project.Extensions; am Anfang Ihres Codes, um die WatiN-Erweiterungen einzuschließen.

Jetzt können Sie die Erweiterung Methode aufrufen:

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

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