WebDriver 与 ChromeDriver
WebDriver vs ChromeDriver
在 Selenium 2 - Java 中,
有什么区别
ChromeDriver driver = new ChromeDriver();
和
WebDriver driver = new ChromeDriver();
?我已经在各种教程、示例等中看到了这两种方法,但不确定使用 ChromeDriver
与 WebDriver
对象之间的区别。
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 对所有浏览器都是全局的
在 Selenium 2 - Java 中,
有什么区别ChromeDriver driver = new ChromeDriver();
和
WebDriver driver = new ChromeDriver();
?我已经在各种教程、示例等中看到了这两种方法,但不确定使用 ChromeDriver
与 WebDriver
对象之间的区别。
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 对所有浏览器都是全局的