如果我们创建:
ChromeDriver driver=new ChromeDriver();
chrome 驱动程序方法将被执行。
如果我们创建:
WebDriver driver=new ChromeDriver();
再次ChromeDriver
执行方法[根据方法覆盖]。
那为什么我们只在执行时才写后一个呢?
如果我们创建:
ChromeDriver driver=new ChromeDriver();
chrome 驱动程序方法将被执行。
如果我们创建:
WebDriver driver=new ChromeDriver();
再次ChromeDriver
执行方法[根据方法覆盖]。
那为什么我们只在执行时才写后一个呢?
如果您使用将通过该实例创建ChromeDriver driver = new ChromeDriver();
的ChromeDriver实例,我们将只能调用和执行由ChromeDriver实现且仅受Chrome 浏览器支持的方法。要与其他浏览器配合使用,我们必须专门创建单个对象,如下所示:
FirefoxDriver driver = new FirefoxDriver();
InternetExplorerDriver driver = new InternetExplorerDriver();
从Selenium的角度来看,WebDriver 接口类似于Mozilla、Chrome、Internet Explorer、Safari等第三方浏览器供应商必须遵守和实施的协议。这将反过来帮助最终用户使用公开的 API 编写通用代码并在所有可用浏览器中实现功能而无需任何更改。
通过WebDriver driver = new ChromeDriver();
我们创建WebDriver接口的实例并将其转换为ChromeDriver类。所有浏览器驱动程序都喜欢:
实现了WebDriver接口(实际上RemoteWebDriver类实现了WebDriver 接口,浏览器驱动程序扩展了 RemoteWebDriver)。因此,如果我们使用WebDriver driver
,那么我们可以将已经初始化的驱动程序(作为公共对象变量)用于我们想要自动化的所有浏览器,例如 Mozilla、Chrome、InternetExplorer、Edge、Opera、Safari,如下所示:
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 接口的实现。按照目前的做法,我们针对这个接口编写我们的自动化测试脚本,以便将来我们可以在需要时更换一个功能更齐全的浏览器。