你好我是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;
}
你写了
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
。请随意更详细地解释它,我会更新解决方案。