WebDriver vs ChromeDriver

在Selenium 2 - Java中,两者之间有什么区别

ChromeDriver driver = new ChromeDriver();

WebDriver driver = new ChromeDriver();

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


答案 1

Satish的答案是正确的,但用更外行的话来说,它特别而且只是Chrome的驱动力。 是一个更通用的驱动程序,可用于许多不同的浏览器...IE,Chrome,FF等ChromeDriverWebDriver

如果您只关心 Chrome,则可以使用以下命令创建一个驱动程序:

ChromeDriver driver = new ChromeDriver();

如果要创建返回指定浏览器的驱动程序的函数,可以执行如下操作。

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。


答案 2

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

以下是ChromeDriver和RemoteDriver类的签名

public class ChromeDriver extends RemoteWebDriver
implements LocationContext, WebStorage {}

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

推荐