vendredi 13 octobre 2017

dumping or printing the name of a variable

This question mentions xpaths but it is really not specific to xpaths and really concerns any Java Strings.

I am using Java 8 and have about 40 Strings (public static final String in the class). An example is below:

private static final String employeeID_x = "//input[@id = 'id']";
private static final String employeeName = "//input[@id = 'EmployeeName']";

and there are some more complicated ones like

private static final String age_x = "//div[@id = 'Employee']/div[2]/span[1]";

etc. There are 40 of these. I want to verify all the xpaths so I made an array like

private static final String[] arr = {employeeID_x, employeeName_x, age_x, .....};

then to verify

for (String xp: arr) {
    List<WebElement> eles = driver.findElement(By.xpath(xp));
    if (eles.size() == 0) {
        System.out.println(xp + " does not exist");
    }
 }

you get the idea. This works, but the error message is "//div[@id = 'Employee']/div[2]/span[1] does not exist". I guess this is ok but I would rather have it say "age_x does not exist".

I don't know how to print the variable name. I have tried using Class and getFields() but that does not seem to work.

What I have to do is duplicate the array and put each element in quotes like this:

private static final String[] names= {"employeeID_x", "employeeName_x", "age_x", .....};

and then get the number of entries and use

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");
    }
}

but as you can see this can get to be a pain. Is there anyway to get the name from xp? Maybe no, as I am afraid when it creates the array it substitutes the value of each string?

And as you can see, this is not specific to xpaths.





Aucun commentaire:

Enregistrer un commentaire