Java Selenium - 使用xpath从具有相同类名的多个div中查找字符串文本

时间:2017-01-24 10:40:06

标签: java selenium xpath selenium-webdriver automated-tests

我希望你能帮助我。

我在这里经历了各种各样的论坛和问题,关于如何使用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%确定如何构建它以便设置数组然后循环。

虽然现在只是验证字段标签,但最终我需要使用这种方法来验证后续数据,然后我会遇到同样的问题

1 个答案:

答案 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++
}