2016-07-25 17 views
2

Bei der Ausführung mehrerer Testfälle gibt Selen ungültigen Text ein, wie im Anhang gezeigt. Im Folgenden sind die beiden Beispiele der Fehler zeigen:Selen gibt ungültigen Text (Halbtext) in das Textfeld ein

  1. Statt AutomationTest123_6035633258972 einzugeben, es tritt nur 6035633258972. Example1.
  2. Anstelle der Eingabe von AutomationTest123_636010703068635512, es nur tritt UtomationTest123_636010703068635512. Example2.

-Code

//StaticVariable is class which has static values 
    var username = StaticVariable.username; 
    var password = StaticVariable.password; 
    driver.FindElement(By.Id("username")).SendKeys(username); //putting wrong values 
    driver.FindElement(By.Id("password")).SendKeys(password); //putting wrong values 
    driver.FindElement(By.Id("login")).Click(); 

Kann mir jemand auf diesem helfen? Jede Hilfe würde geschätzt.

+0

können Sie Ihren Automatisierungscode teilen? – selva

+0

@selva haben den Code aktualisiert. – shoaib

+0

Nur um sicher zu sein, haben Sie die StaticVariable.username in das Protokoll ausgegeben, um sicherzustellen, dass das Problem nicht woanders liegt? – Nibb

Antwort

0

Verwenden Sie die clear Methode dann den Text eingeben: driver.findElement(By.cssSelector("").clear();

Es kann helfen.

+0

Achten Sie darauf, den Code als Code zu formatieren, damit er besser erkennbar und richtig formatiert ist. Sie können die Hilfethemen zum Bearbeiten/Formatieren lesen, aber für Code ist dies am einfachsten, wenn Sie 4 Stellen vor den Code setzen. – JeffC

+0

@Arun Ich habe das versucht, aber die Ergebnisse sind gleich, es wird Halbwert eingegeben. – shoaib

0

vor allem sicherstellen, dass

var username = StaticVariable.username; 

den richtigen Wert zuweist. verwenden ein

print 

, was den Wert von username nach assign zu überprüfen.

, als versuchen, indem Sie den folgenden Code verwenden:

driver.FindElement(By.Id("username")).click() 
driver.FindElement(By.Id("username")).clear() 
driver.FindElement(By.Id("username")).SendKeys(username); 
+0

Sie erkennen, dass Sie die Seite dreimal scrapen, um diesen Code auszuführen? Wenn Sie ein Element 2 oder mehrere Male verwenden möchten, speichern Sie es einfach in einer Variablen und verweisen Sie darauf. Es wird nicht nur die Ausführung beschleunigen, es ist auch wartbarer. Wenn sich diese ID ändert, müssen Sie sie an 3 Stellen aktualisieren. – JeffC

+0

@noor Ich habe das versucht, aber es funktioniert nicht das Ergebnis ist das gleiche, es ist in halben Text eingeben. – shoaib

+0

@JeffC yup, hab es. – shoaib

0

Es kann ein paar Gründe, ich habe gesehen, dass dies ein Problem sein kann. Ich würde zuerst versuchen, die Texteingabe zuerst zu löschen und sicherzustellen, dass es den Fokus hat.

var username = StaticVariable.username; 
var password = StaticVariable.password; 
// Fill out user name 
var userElem = driver.findElement(By.id("username")); 
userElem.click(); 
userElem.clear(); 
userElem.sendKeys(userName); 
// Fill out password 
var passElem = driver.findElement(By.id("password")); 
passElem.click(); 
passElem.clear(); 
passElem.sendKeys(password); 
// Click login button 
driver.findElement(By.id("login")) 
     .click(); 

Wenn jedoch, dass es nicht zu beheben, habe ich Situationen hat, wo die Zeichenfolge bis Aufspalten und Tasten ein paar zu einer Zeit gearbeitet hat, zu senden. Das hat eine Leistungseinbuße, also würde ich es nicht tun, wenn Sie wirklich wirklich brauchen.

public void fooTest() { 
    // Do stuff to get to the correct page, etc 
    var username = StaticVariable.username; 
    var password = StaticVariable.password; 
    // Fill out user name 
    var userElem = driver.findElement(By.id("username")); 
    sendKeys(userElem, userName); 
    // Fill out password 
    var passElem = driver.findElement(By.id("password")); 
    sendKeys(passElem, password); 
    // Click login button 
    driver.findElement(By.id("login")) 
      .click(); 
    // do assertions, etc 
} 

private void sendKeys(WebElement elem, String keys) { 
    elem.click(); 
    elem.clear(); 
    for (int i = 0; i < keys.length(); i) { 
     elem.sendKeys(keys.charAt(i)); 
    } 
} 

Hinweis: Sorry für die Syntax/C# Fehler, ich habe kaum die Sprache verwendet ... Ich bin viel vertrauter mit Java ;-)

+0

Ich habe das versucht, aber es funktioniert nicht das Ergebnis ist das gleiche, es ist in halben Text eingegeben. – shoaib

0

Anstatt mit 'var', Sie Vielleicht möchten Sie versuchen, den spezifischen Typ einzugeben, z. B. "String". Das Problem muss darin liegen, was an .SendKeys() übergeben wird oder wie es von der Funktion empfangen wird.

string username = StaticVariable.username; 
string password = StaticVariable.password;