我希望你能帮助我。
我在这里经历了各种各样的论坛和问题,关于如何使用xpath查询循环使用相同类名的多个div。我是WebDriver和Java的新手,所以我可能没有正确地提出这个问题。
我有一张表,我正在尝试识别其中的值并确保它们是正确的。每个字段都有相同的类标识符,我能够成功撤回第一个结果并使用以下内容通过报告记录确认
var user = {
first_name: $scope.first_name,
last_name: $scope.last_name,
email_id: $scope.email_id,
user_id: $scope.user_id,
password: $scope.password,
mobile: $scope.mobile
};
然而,当我尝试循环时(我已经看到多个答案说要在xpath查询中添加[2]后缀)我收到编译错误:
String className1 = driver.findElement(By.xpath("(//div[@class='table_class'])")).getText();
Reporter.log("=====Class Identified as "+className1+"=====", true);
上面给出了一个错误,说“表达式的类型必须是数组类型,但它已解析为”
我不是100%确定如何构建它以便设置数组然后循环。
虽然现在只是验证字段标签,但最终我需要使用这种方法来验证后续数据,然后我会遇到同样的问题
答案 0 :(得分:0)
您收到错误 -
String className2 = driver.findElement(By.xpath("(//div[@class='table_class'])")[2]).getText();
因为您以错误的方式使用索引将其修改为 -
String className2 = driver.findElement(By.xpath("(//div[@class='table_class'])[2]")).getText();
或
String className2 = driver.findElement(By.xpath("(//div[@class='table_class'][2])")).getText();
更好的方法是 -
int index=1;
List <WebElement> allElement = driver.findElements(By.xpath("(//div[@class='table_class'])"));
for(WebElement element: allElement)
{
String className = element.getText();
Reporter.log("=====Class Identified as "+className+""+index+""+"=====", true);
index++
}