如何在scala中将隐式val传递给基本调用

时间:2014-06-18 15:07:53

标签: scala automation implicit

我是Scala的新手并且还在学习。我正在尝试执行/设计以下方法:

class BasePage (implicit val webDriver: WebDriver, val environment: String) {...}

class LoginPage extends BasePage {...}

class testSpecs extends Specification{
    new WithBrowser(webDriver = currentDriver, app = application){

    implicit val webDriver= browser.webDriver
    implicit val environment = s"localhost:$port"

    val loginPage = new LoginPage()
    ...
}

我想要的是让webDriver和环境(在第一次创建时)可用于testSpecs中测试脚本/测试中的所有页面对象类。

在这种方法中我得到的错误如下:

  

无法找到参数webDriver的隐含值:org.openqa.selenium.WebDriver

  1. 我们如何解决这个问题?
  2. 我可以使用的其他更好的方法是什么?
  3. 非常感谢。

1 个答案:

答案 0 :(得分:1)

BasePage的构造函数需要2个参数。定义类LoginPage时,这些隐式值不在范围内,因此您必须这样写:

class LoginPage(implicit val webDriver: WebDriver, val environment: String) extends BasePage {...}

现在LoginPage还有2个隐式参数,这些参数隐式传递给BasePage的构造函数。