为什么要写成 WebDriver driver = new FirefoxDriver?

在我们写Selenium Java脚本的时候,首先写的就是下面这条语句:

WebDriver driver = new FirefoxDriver();

有的同学会问,在Java中实例化一个类时,语法不应该是  类名称  对象名称 = new 类名称(); 吗?

所以为什么我们不写成WebDriver driver = new WebDriver(); 呢?

为什么不写成FirefoxDriver driver = new FirefoxDriver();呢?

本篇文章就来简单解释一下以上问题。

首先为什么不写成WebDriver driver = new WebDriver(); 呢?

这是因为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(相当于一个通用的浏览器),那么我们就可以方便的把脚本运行在不同的浏览器上。

下面的语句写法也就没有问题了^_^

 

********************************************************************************************************

近期我会在博客中系统的更新一些关于Selenium的文章,也请大家多多关注下我的视频课程:

入门:基于Java的Selenium3自动化测试完整教程

高级:Selenium Java高级架构课程

*********************************************************************************************************

阅读更多精彩文章,请大家关注我的测试公众号:火烈鸟测试

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YOYO测试

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值