【问题标题】:Why we do not write RemoteWebdriver driver = new ChromeDriver();为什么我们不写 RemoteWebdriver driver = new ChromeDriver();
【发布时间】:2020-07-22 03:30:53
【问题描述】:
这个问题突然出现在我的脑海中,为什么我们不写 RemoteWebdriver driver = new ChromeDriver(); 有什么危害为什么我们在创建驱动程序实例时不这样写它有什么好处。
我们确实这样写:
Webdriver driver = new ChromeDriver();
ChromeDriver driver = new ChromeDriver();
但不是这样:
RemoteWebdriver driver = new ChromeDriver():
我是新手,因此我们将不胜感激。
谢谢
【问题讨论】:
标签:
selenium
selenium-webdriver
automation
ui-automation
【解决方案1】:
在初始化 ChromeDriver 并将其分配给类型为 ChromeDriver 的变量时,您可以使用该类型可用的所有具体方法。如果您需要配置 Chrome 浏览器窗口,这很有用:
ChromeDriver driver = new ChromeDriver();
// Configure Google Chrome
WebDriver 是一个接口。 ChromeDriver 是一个实现 WebDriver 接口的具体类。将 WebDriver 变量初始化为 ChromeDriver 的新实例时,您只是为 WebDriver 抽象提供了具体实现。当您想在 Chrome 中进行测试时会这样做,但您不需要 Chrome 特定的配置,并且 WebDriver 接口提供的方法足以满足您的测试。
WebDriver driver = new ChromeDriver();
// Use the WebDriver abstraction without needing to know it is Chrome
RemoteWebDriver 类是 ChromeDriver 派生自的抽象类。它有一些与在同一台计算机上运行的“Web 驱动程序”进程进行 Web 服务调用相关的具体实现。它还包含 ChromeDriver 等具体类必须实现的抽象。
您不会经常看到将新的 ChromeDriver 分配给 RemoteWebDriver 变量的原因是因为从测试的角度来看,WebDriver 对象和 RemoteWebDriver 对象之间没有功能差异。 RemoteWebDriver 提供的抽象级别根本不是很有用。
RemoteWebDriver driver = new ChromeDriver();
// test code tends to only call methods defined in the WebDriver interface,
// so why bother with a concrete class?