一尘不染

selenium中的ChromeDriver和WebDriver有什么区别?

selenium

如果我们创建:

ChromeDriver driver=new ChromeDriver();

chrome驱动程序方法将被执行。

如果我们创建:

WebDriver driver=new ChromeDriver();

再次ChromeDriver执行方法(按方法覆盖)。

那为什么只在执行时才写后一个呢?


阅读 1327

收藏
2020-06-26

共1个答案

一尘不染

ChromeDriver驱动程序=新的C​​hromeDriver();

如果您使用将通过其创建ChromeDriver driver = new ChromeDriver();ChromeDriver
实例,则我们将只能调用和执行由 ChromeDriver 实现且仅受 Chrome浏览器
支持的方法。要与其他浏览器配合使用,我们必须专门创建以下单个对象:

  • FirefoxDriver driver = new FirefoxDriver();
  • InternetExplorerDriver driver = new InternetExplorerDriver();

WebDriver界面

角度来看, webdriver的界面 就像是该第三方一个协议类似 浏览器厂商 喜欢 Mozilla的Chrome浏览器
Internet浏览器Safari浏览器
等必须坚持和贯彻的一样。反过来,这将帮助最终用户使用公开的API编写通用代码并在所有可用的浏览器中实现功能,而无需进行任何更改。


WebDriver驱动程序=新的C​​hromeDriver();

通过WebDriver driver = new ChromeDriver();创建 WebDriver 接口的实例,并将其 强制转换
ChromeDriver 类。所有的浏览器驱动程序都像:

实现了WebDriver接口(实际上RemoteWebDriver类实现了
WebDriver接口 ,而 浏览器驱动程序 扩展了 RemoteWebDriver )。因此,如果使用WebDriver driver,则可以为所有要自动化的浏览器使用已初始化的 驱动程序
(作为公共对象变量),例如Mozilla,Chrome,InternetExplorer,Edge,Opera,Safari,如下所示:

WebDriver driver = new FirefoxDriver();
// or
WebDriver driver = new ChromeDriver();
// or
WebDriver driver = new InternetExplorerDriver();
// or
WebDriver driver = new EdgeDriver();
// or
WebDriver driver = new OperaDriver();
// or
WebDriver driver = new SafariDriver();

琐事

按照当前方案,我们必须直接实例化 WebDriver Interface 的实现。按照当前的惯例,我们针对此接口编写 自动化测试脚本
,以便将来在需要时可以 交换 功能更全的 浏览器

2020-06-26