luc*_*cky 0 java selenium webdriver selenium-webdriver webdriver-w3c-spec
如果我们创建:
ChromeDriver driver=new ChromeDriver();
Run Code Online (Sandbox Code Playgroud)
chrome 驱动程序方法将被执行。
如果我们创建:
WebDriver driver=new ChromeDriver();
Run Code Online (Sandbox Code Playgroud)
再次ChromeDriver执行方法[根据方法覆盖]。
那为什么我们只在执行时写后一个呢?
如果您使用将通过它创建ChromeDriver driver = new ChromeDriver();的ChromeDriver实例,我们将只能调用和操作由ChromeDriver实现且仅由Chrome 浏览器支持的方法。要与其他浏览器一起使用,我们必须专门创建如下单个对象:
FirefoxDriver driver = new FirefoxDriver();InternetExplorerDriver driver = new InternetExplorerDriver();从硒角度来看,webdriver的界面就像是该第三方一个协议类似浏览器厂商喜欢Mozilla的,Chrome浏览器,Internet浏览器,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();
Run Code Online (Sandbox Code Playgroud)
根据当前场景,我们必须直接实例化WebDriver 接口的实现。根据目前的做法,我们针对此接口编写自动化测试脚本,以便将来在需要时可以更换功能更齐全的浏览器。