你好我是java的新手,Eclipse给了我一个错误:
log4j.rootLogger = INFO,fileAppender
log4j.logger.FOO=DEBUG,FOOAppender,fileAppender
log4j.additivity.FOO=false
log4j.appender.FOOAppender = org.apache.log4j.RollingFileAppender
log4j.appender.FOOAppender.layout = org.apache.log4j.PatternLayout
log4j.appender.FOOAppender.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
log4j.appender.FOOAppender.File = foo.log
log4j.appender.fileAppender=org.apache.log4j.FileAppender
log4j.appender.fileAppender.File=log.log
log4j.appender.fileAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.fileAppender.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
以下是我的代码:
The type of the expression must be an array type but it resolved to By
答案 0 :(得分:4)
你写了
By.xpath("//div[contains(@class,'ng-binding')]")[1]
在你的退货声明中。也就是说,您尝试使用By#xpath
像数组一样访问[1]
的结果。但是,该方法不返回数组,它返回By
。
请参阅方法的documentation:
返回:
By
通过 XPath 定位元素。
您可能打算像数组一样访问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
。请随意更详细地解释它,我会更新解决方案。