selenium 中的 ChromeDriver 和 WebDriver 有什么区别?

What is the difference between ChromeDriver and WebDriver in selenium?

提问人:lucky 提问时间:1/3/2018 最后编辑:undetected Seleniumlucky 更新时间:1/19/2020 访问量:29617

问:

如果我们创建:

ChromeDriver driver=new ChromeDriver();

将执行 chrome 驱动程序方法。

如果我们创建:

WebDriver driver=new ChromeDriver();

再次执行方法[根据方法覆盖]。ChromeDriver

那为什么我们只在执行时才写后者呢?

java selenium selenium-webdriver webdriver webdriver webdriver-w3c-spec

评论

1赞 amorenew 1/3/2018
问题格式是解决方案的一部分,这就是为什么您需要标题和问题的格式

答:

12赞 undetected Selenium 1/4/2018 #1

ChromeDriver 驱动程序 = new ChromeDriver();

如果您使用将通过该实例创建的 ChromeDriver 实例,我们将只能调用和操作由 ChromeDriver 实现且仅受 Chrome 浏览器支持的方法。要与其他浏览器一起操作,我们必须专门创建单个对象,如下所示:ChromeDriver driver = new ChromeDriver();

  • FirefoxDriver driver = new FirefoxDriver();
  • InternetExplorerDriver driver = new InternetExplorerDriver();

WebDriver 接口

Selenium的角度来看,WebDriver界面类似于第三方浏览器供应商(如Mozilla,Chrome,Internet Explorer,Safari等)必须遵守并实现的协议。这反过来又可以帮助最终用户使用公开的 API 来编写通用代码,并在所有可用的浏览器上实现功能,而无需进行任何更改。


WebDriver 驱动程序 = new ChromeDriver();

通过我们创建 WebDriver 接口的实例并将其转换为 ChromeDriver 类。所有浏览器驱动程序,例如:WebDriver driver = new ChromeDriver();

实现了 WebDriver 接口(实际上 RemoteWebDriver 类实现了 WebDriver 接口浏览器驱动程序扩展了 RemoteWebDriver)。因此,如果我们使用 ,那么我们可以将已经初始化的驱动程序(作为公共对象变量)用于我们想要自动化的所有浏览器,例如 Mozilla、Chrome、InternetExplorer、Edge、Opera、Safari,如下所示:WebDriver driver

WebDriver driver = new FirefoxDriver();
// or
WebDriver driver = new ChromeDriver();
// or
WebDriver driver = new InternetExplorerDriver();
// or
WebDriver driver = new EdgeDriver();
// or
WebDriver driver = new OperaDriver();
// or
WebDriver driver = new SafariDriver();

琐事

根据当前场景,我们必须直接实例化 WebDriver 接口的实现。根据目前的做法,我们针对此接口编写自动测试脚本,以便将来我们可以在需要时交换功能更全面的浏览器

评论

1赞 lucky 1/4/2018
超。。这就是我一直在寻找的