在硒中ChromeDriver和WebDriver有什么区别?

时间:2018-01-03 14:15:03

标签: java selenium selenium-webdriver webdriver webdriver-w3c-spec

如果我们创建:

ChromeDriver driver=new ChromeDriver();

将执行chrome驱动程序方法。

如果我们创建:

WebDriver driver=new ChromeDriver();

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

那么为什么我们只在执行时编写后者?

1 个答案:

答案 0 :(得分:2)

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

如果您使用ChromeDriver driver = new ChromeDriver(); ChromeDriver 实例,我们将只能调用 ChromeDriver 实施的方法并执行操作仅受 Chrome浏览器支持。要与其他浏览器一起使用,我们必须专门创建单个对象,如下所示:

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

WebDriver Interface

Selenium 的角度来看, WebDriver接口类似于第三方浏览器供应商的协议,如 Mozilla Chrome Internet Explorer Safari 等必须遵守并实施相同的功能。这将反过来帮助最终用户使用公开的API编写公共代码,并在所有可用的Browsers中实现功能而不做任何更改。

为什么WebDriver driver = new ChromeDriver();

通过WebDriver driver = new ChromeDriver();,我们正在创建 WebDriver 界面的实例,投射将其创建为 ChromeDriver类。所有浏览器驱动程序,如FirefoxDriverChromeDriverInternetExplorerDriverPhantomJSDriverSafariDriver等都实现了WebDriver接口(实际上RemoteWebDriver类实现 WebDriver接口浏览器驱动程序扩展 RemoteWebDriver )。因此,如果我们使用WebDriver driver,那么我们可以将已经初始化的驱动程序(作为公共对象变量)用于我们想要自动化的所有浏览器,例如Mozilla,Chrome,InternetExplorer,PhantomJS,Safari。

WebDriver driver = new FirefoxDriver();
driver = new ChromeDriver();
driver = new FirefoxDriver();
driver = new SafariDriver();

琐事WebDriver Interface

根据当前情况,我们必须直接实例化 WebDriver接口的实现。根据目前的做法,我们针对此界面编写了自动测试脚本,以便将来我们可以交换更全功能的浏览器是一个要求。