这个问题提到xpaths,但它确实不是特定于xpaths,并且确实涉及任何Java字符串。转储或打印变量的名称
我正在使用Java 8并有大约40个字符串(类中的公共静态最终字符串)。下面是一个例子:
private static final String employeeID_x = "//input[@id = 'id']";
private static final String employeeName = "//input[@id = 'EmployeeName']";
并有一些更复杂的就像
private static final String age_x = "//div[@id = 'Employee']/div[2]/span[1]";
等有这些40。我想验证所有的XPath所以我做了一个数组一样
private static final String[] arr = {employeeID_x, employeeName_x, age_x, .....};
然后验证
for (String xp: arr) {
List<WebElement> eles = driver.findElement(By.xpath(xp));
if (eles.size() == 0) {
System.out.println(xp + " does not exist");
}
}
你的想法。这有效,但错误消息是 “// div [@id ='Employee']/div [2]/span [1]不存在”。我想这是好的,但我宁愿说它“age_x不存在”。
我不知道如何打印变量名称。我曾尝试使用类和getFields(),但似乎没有工作。
我所要做的就是复制阵列,并把每个元素的报价是这样的:
private static final String[] names= {"employeeID_x", "employeeName_x", "age_x", .....};
,然后得到的条目的数量和使用
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");
}
}
,但你可以看到这可能会变得很痛苦。反正有没有从xp取得这个名字?也许不会,因为我害怕创建数组时它会替换每个字符串的值?
正如你所看到的,这不是特定于xpaths。
而不是一个列表,将它们存储在一个Map中,其中的键是变量名。 –
azurefrog