WebDriver 与 ChromeDriver

WebDriver vs ChromeDriver

在 Selenium 2 - Java 中,

有什么区别

ChromeDriver driver = new ChromeDriver();

WebDriver driver = new ChromeDriver();

?我已经在各种教程、示例等中看到了这两种方法,但不确定使用 ChromeDriverWebDriver 对象之间的区别。

WebDriver 是一个接口,而 ChromeDriver 是 class 实现了 WebDriver 接口。实际上 ChromeDriver 扩展了实现 WebDriver 的 RemoteWebDriver。只是添加每个 WebDriver,如 ChromeDriver、FirefoxDriver、EdgeDriver 都应该实现 WebDriver。

下面是 ChromeDriver 和 RemoteDriver 的签名 classes

public class ChromeDriver extends RemoteWebDriver
implements LocationContext, WebStorage {}

public class RemoteWebDriver implements WebDriver, JavascriptExecutor,
FindsById, FindsByClassName, FindsByLinkText, FindsByName,
FindsByCssSelector, FindsByTagName, FindsByXPath,
HasInputDevices, HasCapabilities, TakesScreenshot {}

Satish 的回答是正确的,但用更通俗的话说,ChromeDriver 只是 Chrome 的驱动程序。 WebDriver 是一个更通用的驱动程序,可用于许多不同的浏览器... IE、Chrome、FF 等

如果您只关心 Chrome,您可以使用

创建一个驱动程序
ChromeDriver driver = new ChromeDriver();

如果你想创建一个函数,returns 一个特定浏览器的驱动程序,你可以像下面那样做。

public static WebDriver startDriver(Browsers browserType)
{
    switch (browserType)
    {
        case FIREFOX:
            ...
            return new FirefoxDriver();
        case CHROME:
            ...
            return new ChromeDriver();
        case IE32:
            ...
            return new InternetExplorerDriver();
        case IE64:
            ...
            return new InternetExplorerDriver();
        default:
            throw new InvalidParameterException("Unknown browser type");
    }
}
public enum Browsers
{
    CHROME, FIREFOX, IE32, IE64;
}

...然后像这样称呼它...

WebDriver driver = startDriver(Browsers.FIREFOX);
driver.get("http://www.google.com");

根据您指定的浏览器,该浏览器将启动并导航至 google.com。

WebDriver 是一个接口

ChromeDriver 是 WebDriver 接口的一个实现

https://docs.oracle.com/javase/tutorial/java/concepts/interface.html

用法没有区别:

ChromeDriver driver = new ChromeDriver();

WebDriver driver = new ChromeDriver();

这可以是最简单的一点:

  • Chrome驱动程序仅特定于 Chrome 浏览器
  • WebDriver 对所有浏览器都是全局的