如果我们在Selenium Automation脚本中只使用Chrome浏览器,那么使用ChromeDriver而不是WebDriver有什么好处 [英] What is benefit of using ChromeDriver over WebDriver if we are using only Chrome Browser in our Selenium Automation Script
问题描述
我使用WebDriver和ChromeDriver变量的方式如下:
第一行:
WebDriver driver1 = new ChromeDriver();
第2行:
ChromeDriver driver2 = new ChromeDriver();
我的脚本仅限于在Chrome Driver中运行测试用例,因此我永远不会使用任何其他浏览器进行测试。 那么,如果我在代码中选择第2行而不是第1行,是否会在任何功能或好处方面有所不同。(查找ChromDriver类除了WebDriver接口的现有方法之外还可以提供的任何附加功能)。
推荐答案
ChromeDriver Driver=new ChromeDriver();
如果您使用ChromeDriver driver = new ChromeDriver();
将通过该实例创建的ChromeDriver实例,我们将只能调用和操作由ChromeDriver实现并仅受Chrome浏览器支持的方法。要与其他浏览器配合使用,我们必须专门创建单个对象,如下所示:
FirefoxDriver driver = new FirefoxDriver();
InternetExplorerDriver driver = new InternetExplorerDriver();
WebDriver Interface
从Selenium的角度看,WebDriver接口类似于Mozilla、Chrome、Internet Explorer、Safari等第三方浏览器供应商必须遵守和实现的协议。这反过来将帮助最终用户使用公开的API编写通用代码,并在所有可用Browsers
中实现功能,而无需任何更改。
为什么WebDriver driver = new ChromeDriver();
到WebDriver driver = new ChromeDriver();
我们正在创建WebDriver接口的一个实例,并将其强制转换为ChromeDriver类。所有浏览器驱动程序,如FirefoxDriver、ChromeDriver、InternetExplorerDriver、PhantomJSDriver、SafariDriver等都实现了WebDriver接口(实际上RemoteWebDriver类实现了WebDriver接口,浏览器驱动程序扩展了RemoteWebDriver)。因此,如果我们使用WebDriver driver
,则可以将已初始化的驱动程序(作为公共对象变量)用于我们要自动化的所有浏览器,例如Mozilla、Chrome、Internet Explorer、PhantomJS、Safari。
WebDriver driver = new FirefoxDriver();
driver = new ChromeDriver();
driver = new FirefoxDriver();
driver = new SafariDriver();
此问题
现在,正如您提到的will never use any other browser for my testing purpose
,您可以依赖ChromDriver类。但在这一点上值得一提的是,ChromeDriver是一个为Chromium实现WebDriver's wire protocol的独立服务器。铬团队正在实施并迁移到W3C standard。
因此,ChromeDriver、GeckoDriver、IEDriverServer、OperaDriver、SafariDriver每个变体将仅符合W3C标准。
您可以在what is the difference between ChromeDriver and WebDriver in selenium?
中找到相关讨论这篇关于如果我们在Selenium Automation脚本中只使用Chrome浏览器,那么使用ChromeDriver而不是WebDriver有什么好处的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!