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