Comment puis-je valider requis champs de saisie à l'aide de Sélénium
Je suis nouveau dans l'automatisation des tests et ont une mission de mettre en œuvre l'automatisation de s'Inscrire Étudiant en utilisant un Formulaire d'Inscription.
Le scénario est de me laisser un peu confus sur la façon de valider le champ de saisie dans le formulaire d'inscription.
Je veux dire, si je n'ai pas de remplir un champ obligatoire, le navigateur indique que je dois remplir ce champ.
Autre chose, c'est que je suis en utilisant un for loop
pour 2 étudiants, où je veux la première fois de quitter les champs de saisie vide. Après la soumission, je dois le voir, il était validé, puis remplir le vide des champs de saisie pour le soumettre à nouveau (maintenant avec les données insérées dans les champs).
Je suis le partage de mon code et serais reconnaissant de toute aide.
public class Cartus {
public static void fill() throws InterruptedException {
System.setProperty("webdriver.chrome.driver", "E:\\workspace\\chromeDriver\\chromeDriver.exe");
ChromeDriver driver = new ChromeDriver();
for(int i=0; i<2; i++) {
driver.get("http://qa-5.ls.vu/v2/landing-page/cartus/en");
driver.findElement(By.xpath("/html/body/div[4]/div/form/div[1]/div")).click();
driver.findElement(By.xpath("/html/body/div[4]/div/form/div[1]/div/select/option[2]")).click();
driver.findElement(By.xpath("/html/body/div[4]/div/form/div[2]/div[1]/input")).sendKeys(/*"sami"*/);
driver.findElement(By.xpath("/html/body/div[4]/div/form/div[2]/div[2]/input")).sendKeys(/*"Mohaname"*/);
WebElement ele=driver.findElement(By.xpath("/html/body/div[4]/div/form/div[3]/div[1]/input"));/*.sendKeys("0221-1234567");*/
String date = FastDateFormat.getInstance("yyyyMMddHHmmss").format(System.currentTimeMillis());
Thread.sleep(1000);
driver.findElement(By.xpath("/html/body/div[4]/div/form/div[3]/div[2]/input"))
.sendKeys(/*"aali_"+date+"@outlook.com"*/);
driver.findElement(By.id("submitButton")).click();
if(ele.getAttribute("value").isEmpty()){
driver.findElement(By.xpath("/html/body/div[4]/div/form/div[2]/div[1]/input")).sendKeys("abcds");
}
if(ele.getAttribute("value").isEmpty()){
driver.findElement(By.xpath("/html/body/div[4]/div/form/div[2]/div[2]/input")).sendKeys("abcds");
}
if(ele.getAttribute("value").isEmpty()){
driver.findElement(By.xpath("/html/body/div[4]/div/form/div[3]/div[1]/input")).sendKeys("abcds");
}
if(ele.getAttribute("value").isEmpty()){
driver.findElement(By.xpath("/html/body/div[4]/div/form/div[3]/div[2]/input")).sendKeys("aali_"+date+"@outlook.com");
}
System.out.println("Test case succesfully run");
}
}
}
Merci.
Vous devez vous connecter pour publier un commentaire.
De prendre un coup d'oeil à votre code et de la lecture que vous êtes nouveau à l'automatisation des tests, la première chose que je peux vous dire c'est d'essayer d'éviter
XPath
et l'utilisationcssSelector
lorsque cela est possible.Si vous avez un ID ou une classe CSS qui permettent d'identifier votre élément, il est plus sûr et plus court.
Voici une bonne source à lire et à comprendre.
Après, je crois que vous avez 2 problèmes dans votre question:
Lorsque vous ne remplissez pas les informations, la page a un peu de moyens pour valider le champ (par exemple, après l'entrée a perdu son accent, après avoir cliqué sur le bouton pour envoyer le formulaire, etc).
En quelque sorte, vous devez vérifier le code HTML qui a été caché et est ensuite montré (avec le message d'avertissement - par exemple, "nom de Champ est requis") et l'utilisation
Selenium
de vérifier si cet élément est présent.Dans cette situation, vous pourriez avoir un objet pour contenir les renseignements utilisés dans le formulaire, de le mettre dans une liste et l'utiliser.
Ici un exemple de la façon dont il pourrait être:
Espère que cela vous aide à résoudre votre problème.