RemoteWebDriver 和 WebDriver 有什么区别?

What is the difference between RemoteWebDriver and WebDriver?

我实际上找不到很好的解释 RemoteWebDriver 和 Selenium 中的 WebDriver 之间的区别。

这是 eclipse 告诉我将 WebDriver 转换为 RemoteWebDriver 的代码。

(!((RemoteWebDriver) driver).getSessionId().toString().contains("null"))

那么为什么我不应该只使用 RemoteWebDriver 而不是 WebDriver?

RemoteWebDriver 是实现接口 WebDriver.

的具体 class

RemoteWebDriver class 包含接口 WebDriver 未声明的其他方法。方法'getSessionId()'就是其中之一。

因此,您的对象需要显式向下转换才能使用 getSessionId 方法,因为 WebDriver 本身不知道任何纯粹由 RemoteWebDriver 定义的方法或变量。

Coming to the question - "why shouldn't I just use RemoteWebDriver instead of WebDriver?"

是的,您可以使用 RemoteWebDriver 而不是 WebDriver,但是这会使代码不符合设计原则 - 'Code to the interface'

您的代码可以正常工作,但没有任何问题。

但是,它不会灵活地使用将来可能出现的其他驱动程序实现(尽管不太可能)实现 WebDriver 但不扩展 RemoteWebdriver。在这种情况下,RemoteWebDriver 类型的变量不能分配给 class 的对象,WebDriver's 实现但不扩展 RemoteWebDriver