我是Scala的新手,我在编写硒测试时遇到了问题。我正在检索webelements
的列表(出于我们的目的,我们假设它们无法单独检索)。该列表将以FluentList
返回。
我可以在fluent列表上操作以检索具有某些功能的元素,例如first()
,但是当我尝试迭代列表时,我收到以下错误:
value foreach is not a member of org.fluentlenium.core.domain.FluentList[org.fluentlenium.core.domain.FluentWebElement]
从我的阅读到目前为止,我认为我需要以某种方式将此列表转换为Scala列表,但到目前为止没有成功。
我是否在正确的轨道上?或者我应该以不同的方式处理这个问题?
相关代码:
val icons = browser.$(Selectors.social_icons)
icons.foreach {
icon.isDisplayed
}
option_text must be equalTo browser.$(Selectors.answered_question)
答案 0 :(得分:1)
使用Java列表时,必须将它们转换为Scala列表才能使用您期望的方法。您有两种选择:
使用scala.collection.JavaConverters
import scala.collection.JavaConverters._
icons.asScala.foreach ...
使用scala.collection.JavaConversions
隐式转换列表:
import scala.collection.JavaConversion._
icons.foreach ...
虽然隐式版本显然更清晰,但有些人更喜欢显式版本,因为它清楚地标记了从Java到Scala的转换,并且可能在调试神秘的隐式转换时有所帮助。
您始终可以查看Java文档以查看所期望的类型。例如,the documentation of FluentList显示:
FluentList<E extends FluentWebElement> extends List<E> ...
因此我们可以预期Scala会将其转换为scala.List[FluentWebElement
。