【发布时间】:2016-01-17 03:08:36
【问题描述】:
我一直在尝试将 WebBrowser 作为 Selenium ScalaTest 规范中的隐式参数传递,但它失败了。我有一个用于所有测试的基础超类:
abstract class BaseSpec extends FunSpec with WebBrowser with ShouldMatchers {
implicit val webDriver: WebDriver = new FirefoxDriver
}
然后我有一个页面对象,它有一个带有隐含 WebBrowser 参数的方法:
object LoginPage extends Page {
def login(username: String, password: String) (implicit browser : WebBrowser ) = {
//...
}
然后我想从实际规范中调用login 方法。由于规范类通过其BaseSpec 超类实现WebBrowser 特征,我希望调用该方法的规范实例被解析为隐式WebBrowser:
class LoginSpec extends BaseSpec {
it("Should fail on invalid password") {
LoginPage login("wrong username", "wrong password")
assertIsOnLoginPage()
}
}
但这失败并出现编译错误:
找不到参数浏览器的隐含值:org.scalatest.selenium.WebBrowser
在线LoginPage login("wrong username", "wrong password")
我是否总是需要明确提供this 作为WebBrowser 参数值,还是有更好的方法?
【问题讨论】: