表达式的类型必须是数组类型,但它解析为By

问题描述 投票:-5回答:1

你好我是java的新手,Eclipse给了我一个错误:

The type of the expression must be an array type but it resolved to By

以下是我的代码:

public boolean currentMonthActivity(){ 
    selectSecondMonth.click(); 
    return Driver.findElements(By.xpath("//div[contains(@class,'ng-binding')]")[1]).size () > 0;
}
java selenium
1个回答
4
投票

说明

你写了

By.xpath("//div[contains(@class,'ng-binding')]")[1]

在你的退货声明中。也就是说,您尝试使用By#xpath访问[1]的结果,就像数组一样。但是,该方法不返回数组,它返回一个By

请参考方法的documentation

返回:通过XPath定位元素的By


您可能打算像数组一样访问Driver.findElements的结果。但是,确切的返回类型是List<WebElement>(请参阅documentation),这不是数组。你会像访问它一样

return Driver.findElements(By.xpath("//div[contains(@class,'ng-binding')]")).get(1);

但是,此访问仅在有多个元素(您尝试访问第二个元素)时才有效。所以一个安全的变体是:

List<WebElement> elements = Driver.findElements(By.xpath(
    "//div[contains(@class,'ng-binding')]"));

if (elements.size() > 1) {
    return elements.get(1);
} else {
    // Do something different
}

但我不确定这是否正是你想要的,因为你似乎返回了boolean。请随意更详细地解释它,我会更新解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.