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

What is the difference between ChromeDriver and WebDriver in selenium?

如果我们创建:

ChromeDriver driver=new ChromeDriver();

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

如果我们创建:

WebDriver driver=new ChromeDriver();

再次 ChromeDriver 方法被执行 [根据方法覆盖]。

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

ChromeDriver driver = 新 ChromeDriver();

如果您使用 ChromeDriver driver = new ChromeDriver(); ChromeDriver 实例,我们将只能调用和执行关于由 ChromeDriver 实现并仅由 Chrome 浏览器 支持的方法。要与其他浏览器一起使用,我们必须专门创建个人 objects,如下所示:

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

WebDriver 界面

Selenium的角度来看,WebDriver接口类似于第三方浏览器供应商,例如 MozillaChromeInternet ExplorerSafari 等必须遵守和实施相同的内容。这将 in-turn 帮助 end-users 使用公开的 API 编写通用代码并在所有可用浏览器上实现功能,而无需任何更改。


WebDriver driver = new ChromeDriver();

通过 WebDriver driver = new ChromeDriver(); 我们正在创建 WebDriver 接口的一个实例,并将其 castingChromeDriverclass。所有浏览器 driver 都像:

实现了 WebDriver interface (actually the RemoteWebDriver class 实现了 WebDriver 界面 浏览器 Drivers 扩展 RemoteWebDriver)。因此,如果我们使用 WebDriver driver,那么我们可以为我们想要自动化的所有浏览器使用已经初始化的 driver(作为常见的 object 变量) 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 接口 的实现。根据目前的做法,我们针对此接口编写 自动测试脚本 ,以便将来我们可以 换入 功能更齐全的 浏览器当有需求时