Java WebDriver与ChromeDriver
在Selenium 2-Java中,它们之间的区别是什么Java WebDriver与ChromeDriver,java,google-chrome,selenium-webdriver,webdriver,selenium-chromedriver,Java,Google Chrome,Selenium Webdriver,Webdriver,Selenium Chromedriver,在Selenium 2-Java中,它们之间的区别是什么 ChromeDriver驱动程序=新的ChromeDriver() 及 WebDriver=new ChromeDriver() ??我已经在各种教程、示例等中看到了这两种方法,并且不确定使用ChromeDriver与WebDriver对象之间的区别。WebDriver是一个接口,而ChromeDriver是一个实现WebDriver接口的类。实际上ChromeDriver扩展了实现WebDriver的RemoteWebDriver。只需
ChromeDriver驱动程序=新的ChromeDriver()代码>
及
WebDriver=new ChromeDriver()代码>
??我已经在各种教程、示例等中看到了这两种方法,并且不确定使用ChromeDriver
与WebDriver
对象之间的区别。WebDriver是一个接口,而ChromeDriver是一个实现WebDriver接口的类。实际上ChromeDriver扩展了实现WebDriver的RemoteWebDriver。只需添加像ChromeDriver、FirefoxDriver、EdgeDriver这样的每个Web驱动程序,就可以实现Web驱动程序
下面是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
是一种更通用的驱动程序,可用于多种不同的浏览器。。。例如,铬、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接口的一个实现
在用法上没有区别:
ChromeDriver driver = new ChromeDriver();
或
这可能是最简单的一点:
- ChromeDriver仅适用于Chrome浏览器
- WebDriver适用于所有浏览器
非常有帮助,谢谢如果这回答了您的问题,请将其标记为已接受,如果您觉得它有用(或任何与此相关的答案),请向上投票。IMHO:此答案可以通过强调您可以在运行时选择浏览器这一事实来改进。将startDriver(浏览器)
更改为startDriver(字符串)
,并将其命名为startDriver(System.getenv(“浏览器”)
。如果我太挑剔,请原谅。:)另外:ChromeDriver
扩展了JavascriptExecutor
和TakesScreenshot
类(通过扩展RemoteWebDriver
),而WebDriver
没有扩展这些类。因此,如果您使用这些函数,并且仅使用ChromeDriver
,则无需重新编写驱动程序
。您的第一条评论不会改变我的答案。您也可以轻松地从配置文件中提取浏览器,将其转换为枚举,然后将其传递到startDriver()
。我在过去几年里写的几部组曲中做了一些变化。。。但作为字符串传入同样有效。我倾向于在有意义的时候使用枚举,因为当字符串使用vs ENUM时,它减少了字符串处理和与打字错误等相关的错误。@Raedwald这怎么会是重复的?你的问题是纯粹的接口;概括性。我的问题是关于两个不同的特定对象。
WebDriver driver = new ChromeDriver();