Why WebDriver driver = new FirefoxDriver();
Posted 火烈鸟测试
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Why WebDriver driver = new FirefoxDriver();相关的知识,希望对你有一定的参考价值。
在我们写Selenium Java脚本的时候,
首先写的就是下面这条语句:
WebDriver driver = new FirefoxDriver();
有的同学会问,在Java中实例化一个类时,语法不应该是
类名称 对象名称 = new 类名称(); 吗?
所以为什么我们不写成
WebDriver driver = new WebDriver(); 呢?
为什么不写成
FirefoxDriver driver = new FirefoxDriver();呢?
本篇文章就来解释一下以上问题。
首先为什么不写成WebDriver driver = new WebDRriver(); 呢?
这是因为WebDriver是一个接口(interface),在Java中接口是不能被实例化的。
(因为接口中定义的都是一些没有实现的空方法,所以是无法实例化的,在后面的文章中会给大家详细介绍下接口的概念)
如果我们这样写的话,在Eclipse中就会报:Cannot instantiate the type WebDriver的错误
接下来另一个问题
为什么不写成
FirefoxDriver driver = new FirefoxDriver();呢?
这样写其实是可以的。
但是这样写我们就会把所有的操作完全限定在火狐浏览器上,
如果要在谷歌浏览器上操作,则还需实例化另外的对象,像下面的语句:
ChromeDriver driver = new ChromeDriver();
但是如果启动火狐和启动谷歌时,实例化的对象都使用driver这个名字,又会报不允许重名的错误:Duplicate local variable driver
为了解决这个问题,并且可以方便的启动不同的浏览器,我们最终写成了
WebDriver driver = new FirefoxDriver();
让我们再来解释一下这条语句:
解释 WebDriver driver = new FirefoxDriver();
FirefoxDriver是一个具体的类,它是对WebDriver这个接口根据火狐浏览器的特性而进行的一个具体实现,
ChromeDriver, IEDriver 等也都是对WebDriver这个接口根据各自浏览器的特性而进行的具体实现,见Selenium java doc
所以如果我们用WebDriver driver(相当于一个通用的浏览器),那么就可以方便地把脚本运行在不同的浏览器上了。
下面的语句写法也就没有问题了^_^
更多精彩文章,长按关注火烈鸟测试,喜欢就点好看哦^_^
以上是关于Why WebDriver driver = new FirefoxDriver();的主要内容,如果未能解决你的问题,请参考以下文章