RemoteWebDriver 和 WebDriver 有什么区别?

jac*_*a1n 3 selenium selenium-webdriver remotewebdriver

我实际上无法很好地解释 RemoteWebDriver 和 Selenium 中的 WebDriver 之间的区别。

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

(!((RemoteWebDriver) driver).getSessionId().toString().contains("null"))
Run Code Online (Sandbox Code Playgroud)

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

Sac*_*oob 9

RemoteWebDriver是一个实现 interface 的具体类WebDriver

RemoteWebDriverclass 包含未由 interface 声明的其他方法WebDriver。方法'getSessionId()'就是其中之一。

因此,您的对象需要显式转换为使用getSessionId方法,因为WebDriver它本身不知道任何纯粹由RemoteWebDriver.

来到这个问题 - “为什么我不应该使用RemoteWebDriver而不是WebDriver?”

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

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

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