【发布时间】:2011-04-22 20:47:14
【问题描述】:
我正在做一些 WebDriver+PageObject 的东西。
(如果您不熟悉 PageObjects,这是一种模式,其中您有一个代表站点上每个页面的类,它使用域语言公开页面的所有功能,从测试中隐藏 HTML 内容。)
我想偷懒,在我的抽象 Page 类中有一个“提交”方法,我的所有其他 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]
我以为我很聪明,但显然我不是。 ;) 我做错了什么?
【问题讨论】:
标签: generics reflection scala manifest instantiation