Prenons une page Web standard comportant de nombreux champs de texte, des menus déroulants, etc. Quel est le moyen le plus efficace dans webdriver pour remplir les valeurs et ensuite vérifier si les valeurs ont été entrées correctement.
Réponses
Trop de publicités?Vous ne devez vérifier que les valeurs sont saisies correctement que si vous disposez d'une validation javascript ou d'une autre magie dans vos champs de saisie. Vous ne voulez pas tester que webdriver/selenium fonctionne correctement.
Il existe plusieurs façons de procéder, selon que l'on souhaite utiliser webdriver ou selenium. Voici un pot-pourri de ce que j'utilise.
Assert.assertEquals("input field must be empty", "", selenium.getValue("name=model.query"));
driver.findElement(By.name("model.query")).sendKeys("Testinput");
//here you have to wait for javascript to finish. E.g wait for a css Class or id to appear
Assert.assertEquals("Testinput", selenium.getValue("name=model.query"));
Avec webdriver uniquement :
WebElement inputElement = driver.findElement(By.id("input_field_1"));
inputElement.clear();
inputElement.sendKeys("12");
//here you have to wait for javascript to finish. E.g wait for a css Class or id to appear
Assert.assertEquals("12", inputElement.getAttribute("value"));
Avec un peu de chance, les résultats du remplissage de votre formulaire sont visibles pour l'utilisateur d'une manière ou d'une autre. Donc vous pourriez penser à ces lignes BDD-esque :
When I create a new movie
Then I should see my movie page
En d'autres termes, votre étape "nouveau film" se chargerait de la saisie du champ et de l'envoi. Et votre étape "Then" vérifierait que le film s'affiche avec les données que vous avez saisies.
element = driver.find_element(:id, "movie_title")
element.send_keys 'The Good, the Bad, the Ugly'
# etc.
driver.find_element(:id, "submit").click
Je ne fais que barboter dans ce domaine, mais voici ce que j'ai trouvé jusqu'à présent. Cela semble certainement plus verbeux que quelque chose comme Capybara :
fill_in 'movie_title', :with => 'The Good, the Bad, the Ugly'
J'espère que cela vous aidera.