为什么我们将firefoxdriver实例分配给webdriver

Uda*_*day 3 java selenium selenium-webdriver

我是Java或Selenium的新手.

我只是需要帮助来理解一个基本问题.

为什么我们将firefoxdriver实例分配给WebDriver?WebDriver驱动程序=新的FirefoxDriver()

我知道这是Java中的后期绑定,因为我们可以在以后的时间点将IEDriver或其他实例分配给WebDriver.

问题1:但这适用于课程,对吧?

问题2:WebDriver是一个接口,那么我们可以创建一个接口的对象实例吗?

小智 16

WebDriver driver = new FirefoxDriver();
Run Code Online (Sandbox Code Playgroud)

在上面的语句中,WebDriver是一个接口.接口包含已定义但未实现的空方法.只要不违反方法类型和签名,任何人都可以实现这些方法.因此,接口也称为契约,因为您可以根据需要使用接口,但不能更改它的定义方式.而且,因为它有空方法,你实际上不需要实例化它,所以你不能实例化它.

FirefoxDriver是专为Firefox浏览器编写的类.它具有已实现的方法,可以实例化.它可以在界面中定义的Firefox浏览器上执行所有功能(或方法)WebDriver.

所以在上面的陈述中,我们实际上在告诉FirefoxDriver班级"嘿,你可以在Firefox浏览器上自动化你想要的各种方法,但你需要坚持WebDriver"中定义的合同.所以我们声明一个类型的引用变量WebDriver然后用它来实例化FirefoxDriver,这意味着对象(驱动程序)是类型的,WebDriver但指向内存分配给所有数据和方法FirefoxDriver(并且,如上所述,FirefoxDriver类已经具有已实现的方法版本WebDriver).好吧:)

通过使用这种技术,我们使测试人员可以轻松使用他或她喜欢的任何浏览器.例如,要在IE驱动程序上自动化,就必须简单地编写一个类似的语句

WebDriver driver = new IEDriver(); //where IEDriver is the class written for IE
Run Code Online (Sandbox Code Playgroud)