Я делаю кое-что из WebDriver + PageObject.
(Если вы не знакомы с PageObjects, это шаблон, в котором у вас есть класс, представляющий каждую страницу вашего сайта, который предоставляет все функции страницы с использованием языка домена, скрывая HTML-материал из теста.) *
Я хочу быть ленивым и иметь один метод 'submit' в моем абстрактном классе Page, из которого распространяются все мои другие страницы. Я также хочу, чтобы этот метод создал новый подкласс Page и вернул его.
Вот что я имею в классе Page:
def submitExpecting[P <: Page[P]](implicit m: Manifest[_]): P = {
driver.findElement(By.xpath("//input[@type='submit']")).click
m.erasure.getConstructor(classOf[WebDriver]).newInstance(driver).asInstanceOf[P]
}
и вот как я это называю:
val userHomePage = userSignupPage
.login("graham")
.acceptTermsAndConditions
.submitExpecting[UserHomePage]
Компилируя это, я получаю:
error: could not find implicit value for parameter m: Manifest[_]
.submitExpecting[UserHomePage]
Я думал, что я умный, но, очевидно, я не умный. ;)
Что я делаю не так?