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