在Scala中迭代/预测FluentLenium列表

时间:2015-04-07 20:50:50

标签: scala selenium fluent-interface

我是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)

1 个答案:

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