WebDriver与ChromeDriver

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

ChromeDriver driver = new ChromeDriver();

WebDriver driver = new ChromeDriver();

? 我已经看过这两个用于各种教程,示例等。

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 {} 

Satish的回答是正确的,但更多的外行人认为, ChromeDriver是专门的Chrome驱动程序。 WebDriver是一个更通用的驱动程序,可用于许多不同的浏览器… IE,Chrome,FF等。

如果您只关心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。

WebDriver是一个界面

ChromeDriver是WebDriver界面的一个实现

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

使用方法没有区别:

 ChromeDriver driver = new ChromeDriver(); 

要么

 WebDriver driver = new ChromeDriver();