Iterate/foreach 在 Scala 中的 FluentLenium 列表

Iterate/foreach over a FluentLenium List in Scala

我是 Scala 新手,在编写 selenium 测试时遇到问题。我正在检索 webelements 的列表(出于我们的目的,我们假设无法单独检索它们)。该列表以 FluentList.

的形式返回

我可以对流式列表进行操作以检索具有某些自身功能的元素,例如 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)

使用 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.