一尘不染

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

selenium

我是Java或Selenium的新手。

我只需要帮助来了解一个基本问题。

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

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

问题1:但这适用于课堂,对吗?

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


阅读 292

收藏
2020-06-26

共1个答案

一尘不染

WebDriver driver = new FirefoxDriver();

在上面的声明中,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
2020-06-26