I'm doing some WebDriver+PageObject stuff.
(If your not familiar with PageObjects, this is a pattern where you have a class representing each page on your site which exposes all the functions of the page using the domain language, hiding the HTML stuff from the test.)
I want to be lazy and have one 'submit' method in my abstract Page class that all my other Pages extend from. I also want this method to new up the next Page subclass and return it.
Here is what I have in the Page class:
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]
}
and here's how I'm calling it:
val userHomePage = userSignupPage
.login("graham")
.acceptTermsAndConditions
.submitExpecting[UserHomePage]
Compiling this, I get:
error: could not find implicit value for parameter m: Manifest[_]
.submitExpecting[UserHomePage]
I thought I was being smart, but clearly I'm not. ;) What am I doing wrong?