Cette question mentionne xpaths mais n'est vraiment pas spécifique aux xpaths et concerne vraiment les Java Strings. J'utilise Java 8 et j'ai environ 40 Strings (public static final String dans la classe). Un exemple est ci-dessous:Décharger ou imprimer le nom d'une variable
private static final String employeeID_x = "//input[@id = 'id']";
private static final String employeeName = "//input[@id = 'EmployeeName']";
et il y a d'autres plus compliquées comme
private static final String age_x = "//div[@id = 'Employee']/div[2]/span[1]";
etc. Il y a 40 de ces derniers. Je veux vérifier tous les XPath donc je fait un tableau comme
private static final String[] arr = {employeeID_x, employeeName_x, age_x, .....};
puis de vérifier
for (String xp: arr) {
List<WebElement> eles = driver.findElement(By.xpath(xp));
if (eles.size() == 0) {
System.out.println(xp + " does not exist");
}
}
vous voyez l'idée. Cela fonctionne, mais le message d'erreur est "// div [@id = 'Employee']/div [2]/span [1] n'existe pas". Je suppose que c'est ok mais je préférerais qu'il dise "age_x n'existe pas".
Je ne sais pas comment imprimer le nom de la variable. J'ai essayé d'utiliser Class et getFields() mais cela ne semble pas fonctionner.
Ce que je dois faire est de dupliquer le tableau et mettre chaque élément entre guillemets comme ceci:
private static final String[] names= {"employeeID_x", "employeeName_x", "age_x", .....};
puis obtenir le nombre d'entrées et utiliser
for (int i = 0; i < arr.length; i++) {
String xp = arr[i];
String name = names[i];
List<WebElement> eles = driver.findElements(By.xpath(xp));
if (eles.size() == 0) {
System.out.println(name + " does not exist");
}
}
mais comme vous pouvez le voir Cela peut devenir une douleur. Est-il possible d'obtenir le nom de xp? Peut-être non, comme j'ai peur quand il crée le tableau, il remplace la valeur de chaque chaîne? Et comme vous pouvez le voir, ceci n'est pas spécifique à xpaths.
Au lieu d'une liste, stockez-les dans une carte 'où la clé est le nom de la variable. –
azurefrog