如果我们创建:
ChromeDriver driver=new ChromeDriver();
将执行chrome驱动程序方法。
如果我们创建:
WebDriver driver=new ChromeDriver();
再次执行ChromeDriver
个方法[根据方法覆盖]。
那么为什么我们只在执行时编写后者?
答案 0 :(得分:2)
如果您使用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,InternetExplorer,PhantomJS,Safari。
WebDriver driver = new FirefoxDriver();
driver = new ChromeDriver();
driver = new FirefoxDriver();
driver = new SafariDriver();
WebDriver Interface
根据当前情况,我们必须直接实例化 WebDriver接口的实现。根据目前的做法,我们针对此界面编写了自动测试脚本,以便将来我们可以交换更全功能的浏览器是一个要求。