В чем разница между RemoteWebDriver и WebDriver?

На самом деле я не смог найти хорошего объяснения того, в чем разница между RemoteWebDriver и WebDriver в Selenium.

Вот код, в котором eclipse сказал мне преобразовать WebDriver в RemoteWebDriver.

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

Так почему бы мне просто не использовать RemoteWebDriver вместо WebDriver?


person jackra1n    schedule 16.08.2019    source источник
comment
remote предназначен для запуска драйвера с помощью браузеров на других машинах.   -  person pcalkins    schedule 16.08.2019
comment
Проверьте документы Java seleniumhq.github.io/selenium /docs/api/java/org/openqa/selenium/ и seleniumhq .github.io/selenium/docs/api/java. например Контекстный интерфейс поиска -> Интерфейс веб-драйвера -> Класс RemoteWebdriver -> Класс драйвера Chromium -> Класс драйвера Chrome   -  person Rahul L    schedule 18.08.2019


Ответы (1)


RemoteWebDriver — это конкретный класс, реализующий интерфейс WebDriver.

Класс RemoteWebDriver содержит дополнительные методы, не объявленные интерфейсом WebDriver. Метод 'getSessionId()' является одним из них.

Следовательно, ваш объект должен быть явно понижен, чтобы использовать метод getSessionId, поскольку сам WebDriver не знает ни одного метода или переменной, которые полностью определены RemoteWebDriver.

Переходя к вопросу - "почему бы мне просто не использовать RemoteWebDriver вместо WebDriver?"

Да, вы можете использовать RemoteWebDriver вместо WebDriver, однако это делает код не соответствующим принципу разработки - 'Code to the interface'

Ваш код будет работать нормально, хотя без каких-либо проблем.

Однако у него не будет гибкости для использования других реализаций драйверов, которые могут появиться в будущем (хотя это очень маловероятно), которые реализуют WebDriver, но не расширяют RemoteWebdriver. В таком случае переменная типа RemoteWebDriver не может быть присвоена объекту класса, который WebDriver's реализует, но не расширяет RemoteWebDriver

person Sachin Ramdhan Boob    schedule 18.08.2019