我实际上无法很好地解释Selenium中RemoteWebDriver和WebDriver之间的区别。
这是eclipse告诉我的将WebDriver转换为RemoteWebDriver的代码。
(!((RemoteWebDriver) driver).getSessionId().toString().contains("null"))
那我为什么不只使用RemoteWebDriver代替WebDriver?
答案 0 :(得分:3)
RemoteWebDriver
是实现接口WebDriver
的具体类。
RemoteWebDriver
类包含接口WebDriver
未声明的其他方法。方法'getSessionId()'
是其中之一。
因此,由于getSessionId
本身不了解任何纯粹由WebDriver
定义的方法或变量,因此需要显式地向下转换对象以使用RemoteWebDriver
方法。
出现一个问题-“为什么我不应该只使用
RemoteWebDriver
而不是WebDriver
?”
是的,您可以使用RemoteWebDriver
而不是WebDriver
,但是这会使代码不符合设计原则-'Code to the interface'
您的代码可以正常运行,尽管没有任何问题。
但是,它不能灵活地使用将来可能(但不太可能)实现WebDriver
但不扩展RemoteWebdriver
的其他驱动程序实现。在这种情况下,无法将RemoteWebDriver
类型的变量分配给实现了WebDriver's
但不能扩展RemoteWebDriver