2016-06-20 6 views
-1

Ich teste eine userdatepage mit Selenium Webdriver/Java 7/Firefox. Ich habe eine Reihe von 13 verschiedenen Testdaten in einer Tabelle in Excel gespeichert. Der erste Test ist über den Namen des Benutzers zu fehlen, der zweite Test ist über einen falschen Wert für den Namen des Benutzers, der dritte ist etwa im richtigen Passwort Wert und so weiter. ..Sendkeys zum ersten Feld der Seite schlägt manchmal fehl

Von Zeit zu Zeit Für den userdatapage ich mit dem pagefactory Modell Selenium ein Pageobject instanziiert bin mit, aber nicht sehr oft, das Namensfeld, das erste Feld auf der Seite, gefüllt nicht. Was ich mache ist zuerst click, dann clear und schließlich send keys zum Feld.

Ich kann dem Code etwas Verzögerung hinzufügen, aber was ich nicht verstehe ist, warum in diesem Fall keine Element Ausnahme nicht gefunden wird. Ist das, weil ich das PageFactory Konzept verwende. Kann mir das jemand erklären?

Dies ist der HTML-Code der ersten Inputfield:

<div class="form-group"> 
    <div class="input-group"> 
     <div class="input-group-addon"> 
      <span class="glyphicon glyphicon-user"></span> 
      <span class="asterisk glyphicon glyphicon-asterisk"></span> 
     </div> 
     <div class="input-group-input"> 
      <input type="text" class="form-control" name="inputName"  title="Volledige naam inclusief voorletters of voornaam" placeholder="Voorletters/Voornaam Achternaam"data-bind="value:name"/> 
      <span class="help-block" id="naamMessage"> </span> 
     </div> 
    </div> 
</div> 

Und hier ist der Java Code, um das Feld zu füllen:

public void setUserData(String naam, String password, String passwordRepeat, String land, String straat, 
     String postcode, String stad, String telefoonnr, String akkoord) { 

    setInputNameTextBox(naam); 
    setInputPasswordTextBox(password); 
    setInputPasswordRepeatTextBox(passwordRepeat); 
    setInputCountryTextBox(land); 
    setInputStreetTextBox(straat); 
    setInputZipCodeTextBox(postcode); 
    setInputCityTextBox(stad); 
    setInputPhoneTextBox(telefoonnr); 
    if (akkoord != "") { 
     clickInputApprove(); 
    } 

} 

public void setInputNameTextBox(String naam) { 
    inputName.click(); 
    inputName.clear(); 
    inputName.sendKeys(naam); 
} 
+0

Stellen Sie 'HTML' für Eingabefelder und Code bereit, den Sie versucht haben – Andersson

Antwort

0

Sie AjaxElementLocatorFactory in Ihrem POM Klasse und prüfen, ob sie verwenden können löst in diesem Fall einen Fehler aus.

+0

Ich habe diese AjaxElementLocatorFactory der POM-Klasse hinzugefügt und bis jetzt gab es keinen Fehler während des Tests. Was ich nicht sicher bin, ist es sinnvoll, diese AjaxElementFactory hinzuzufügen, das ist keine dynamische Webseite. – Frank

+0

AjaxElementLocatorFactory ist ein Lazy-Load-Konzept im Page Factory-Muster, um WebElements nur dann zu identifizieren, wenn sie in einem beliebigen Vorgang verwendet werden, dh ein timeOut für ein WebElement kann der Object-Seitenklasse mit Hilfe von AjaxElementLocatorFactory.it zugeordnet werden . Sie können dieses Konzept verwenden, um implizites Warten auf bessere und effizientere Weise zu implementieren. Ob Ihre Seite dynamisch ist oder nicht –

+0

Vielen Dank für Ihre klare Erklärung des AjaxElementLocatorFactory-Konzepts. – Frank

Verwandte Themen