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
我实际上找不到很好的解释 RemoteWebDriver 和 Selenium 中的 WebDriver 之间的区别。
这是 eclipse 告诉我将 WebDriver 转换为 RemoteWebDriver 的代码。
(!((RemoteWebDriver) driver).getSessionId().toString().contains("null"))
那么为什么我不应该只使用 RemoteWebDriver 而不是 WebDriver?
RemoteWebDriver
是实现接口 WebDriver
.
RemoteWebDriver
class 包含接口 WebDriver
未声明的其他方法。方法'getSessionId()'
就是其中之一。
因此,您的对象需要显式向下转换才能使用 getSessionId
方法,因为 WebDriver
本身不知道任何纯粹由 RemoteWebDriver
定义的方法或变量。
Coming to the question - "why shouldn't I just use
RemoteWebDriver
instead ofWebDriver
?"
是的,您可以使用 RemoteWebDriver
而不是 WebDriver
,但是这会使代码不符合设计原则 - 'Code to the interface'
您的代码可以正常工作,但没有任何问题。
但是,它不会灵活地使用将来可能出现的其他驱动程序实现(尽管不太可能)实现 WebDriver
但不扩展 RemoteWebdriver
。在这种情况下,RemoteWebDriver
类型的变量不能分配给 class 的对象,WebDriver's
实现但不扩展 RemoteWebDriver