저는 scala를 처음 사용합니다. 내 질문과 관련된 다음 네 가지 클래스는 스칼라에서 설계된 테스트 자동화 프레임 워크에 있습니다. 그것은 그것의 인스턴스가 슈퍼 클래스 (PageObject가)의 등의 방법으로 전달되는 슈퍼 클래스가 그 구성원을 포함하지 않는 경우는 객체 (LoginPage)의 액세스 회원 (년, 월, 일)에 가능메소드에 전달 될 때 객체의 배타적 멤버에 인스턴스/유형으로 액세스합니다.
trait PageObject {
val rootUrl = "http://localhost:9999/basic-page"
val back = "backLink"
val submit = "submit"
val url: String
val heading: String
}
object LoginPage extends PageObject {
val url =s"$rootUrl/login-page"
val heading = "Heading heading"
val day = "login_page_day"
val month = "login_page__month"
val year = "login_page__year"
}
import LoginPage
object Main {
def main(args: Array[String]) {
val date = "15 August 2017"
enterDateOnPage(date, LoginPage)
}
}
<current way>
class DateMethods {
def enterDateOnPage(date: String, page: PageObject) {
val arr = date.split(" ")
val cal = Calendar.getInstance()
cal.setTime(new SimpleDateFormat("MMMM").parse(arr(1)))
numberField(LoginPage.day).value = arr(0)
numberField(LoginPage.month).value = (cal.get(Calendar.MONTH) + 1).toString
numberField(LoginPage.year).value = arr(2)
click on name(LoginPage.submit)
}
}
<preferred way>
class DateMethods {
def enterDateOnPage(date: String, page: PageObject) {
val arr = date.split(" ")
val cal = Calendar.getInstance()
cal.setTime(new SimpleDateFormat("MMMM").parse(arr(1)))
numberField(page.day).value = arr(0)
numberField(page.month).value = (cal.get(Calendar.MONTH) + 1).toString
numberField(page.year).value = arr(2)
click on name(page.submit)
}
}
pageMatch가 LoginPage를 실제로 반환하는지 확인한 후 'LoginPage.day'와 같은 항목을 'page.day'로 바꿀 수 있습니까?
나는 사무엘 히니의 답변에 따라이 같은 시도 않았지만 내가 PageObject의 특성에 구성원으로 일, 월 및 연도를 추가하는 경우
def enterDateOnPage(date: String, page: PageObject) {
val npage = getPage(page)
val arr = date.split(" ")
val cal = Calendar.getInstance()
cal.setTime(new SimpleDateFormat("MMMM").parse(arr(1)))
numberField(npage.day).value = arr(0)
numberField(npage.month).value = (cal.get(Calendar.MONTH) + 1).toString
numberField(npage.year).value = arr(2)
click on name(npage.submit)
}
def getPage(page:PageObject)={
page match{
case _:LoginPage.type => LoginPage
case _:EntryFormPage.type => EntryFormPage
}
만 작동 컴파일되지 않습니다,하지만이 아닙니다 나를위한 실현 가능한 옵션
감사합니다. 이 하나는 나를 위해 매력처럼 일했다. –