2015-04-07 5 views
1

Я новичок в Scala, и у меня возникла проблема при написании теста на селен. Я извлекаю список webelements (для наших целей позволяет предположить, что их невозможно получить отдельно). Список возвращается как FluentList.Iterate/foreach over FluentLenium List в Scala

я могу работать на беглом список для извлечения элементов с некоторыми из своих собственных функций, как 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

При работе со списками 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.

+0

Спасибо, Бен, работал как шарм! – Driver