2016-06-22 9 views
2

Ich verwende C# OpenQA.Selenium.Support.PageObjects und OpenQA.Selenium.Selen SendKey Konflikt mit jquery Eingabemaske

Im Seitenmodell habe ich versucht, eine E-Mail in das Textfeld einzugeben, das eine Eingabemaske hat.

[FindsBy(How = How.Id, Using = "Email")] 
private IWebElement _txtEmail; 

public string Email 
{ 
    set 
    { 
     _txtEmail.SendKeys(value); 
    } 
} 

Dann nach SendKey, habe ich etwas wie diesen Screenshot. enter image description here

Was ist der richtige Weg zu SendKeys, wenn eine Eingabemaske vorhanden ist?

Antwort

2

Es gibt ein paar Probleme hier, in vielen Fällen Selen Eingabe der Daten schneller als das JavaScript verarbeiten kann, was seltsames Verhalten verursacht. Am besten klicken Sie zuerst auf das Element, dann warten Sie eine Sekunde. Dann beginnen Sie mit der Eingabe der Daten.

Wenn das immer noch nicht funktioniert, sollten Sie in Betracht ziehen, JavaScript direkt in den Text einzufügen, um den Wert der Texteingabe zu füllen.


aktualisieren

Hier ist der Arbeits Code-Schnipsel:

public string Email 
{ 
    set 
    { 
     _txtEmail.Click(); 
     Thread.Sleep(10); 
     _txtEmail.SendKeys(value); 
    } 
} 

Keine Notwendigkeit für 1000 ms zu warten.

+0

Danke. Aber wie warte ich eine Sekunde? – Blaise

+0

Ich habe 'Driver.Manage(). Timeouts() .ImplicitlyWait (TimeSpan.FromSeconds (1));'. noch vermessene Eingabemaske. – Blaise

+0

Thread.Sleep (1000); –

0

Wahrscheinlich nicht die ideale Lösung, aber es hat einfach funktioniert.

NuGet ein Paket namens Selenium.WebDriverBackedSelenium.

und benutzen Sie diesen folgenden Code-Schnipsel an die Stelle des SendKeys()

public string Email 
{ 
    set 
    { 
     var selenium = new WebDriverBackedSelenium(driver, MyPageUrl); 
     selenium.Start(); 
     selenium.Type("Email", value); 
    } 
} 

nehmen Aber es muss ein besserer Weg für diese sein. Lassen Sie uns das hier als provisorische Lösung veröffentlichen, während wir auf eine bessere Antwort warten.