WebDriver与ChromeDriver

8pr*_*ons 9 java google-chrome webdriver selenium-chromedriver selenium-webdriver

在Selenium 2 - Java中,有什么区别

ChromeDriver driver = new ChromeDriver();

WebDriver driver = new ChromeDriver();

?我已经看到这些用于各种教程,示例等.

Jef*_*ffC 16

萨蒂什的答案是正确的,但更多的外行人的说法,ChromeDriver是专门的,只是Chrome的驱动程序.WebDriver是一个更通用的驱动程序,可用于许多不同的浏览器... IE,Chrome,FF等

如果您只关心Chrome,可以使用创建驱动程序

ChromeDriver driver = new ChromeDriver();
Run Code Online (Sandbox Code Playgroud)

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

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;
}
Run Code Online (Sandbox Code Playgroud)

......然后把它叫做......

WebDriver driver = startDriver(Browsers.FIREFOX);
driver.get("http://www.google.com");
Run Code Online (Sandbox Code Playgroud)

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


Sat*_*pta 15

WebDriver是一个界面,而ChromeDriver是一个实现WebDriver界面的类.实际上ChromeDriver扩展了实现WebDriver的RemoteWebDriver.只需添加像ChromeDriver,FirefoxDriver,EdgeDriver这样的Every WebDriver就可以实现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 {}
Run Code Online (Sandbox Code Playgroud)