В чем преимущество использования ChromeDriver по сравнению с WebDriver, если в нашем сценарии автоматизации Selenium используется только браузер Chrome
Я использую переменные WebDriver и ChromeDriver следующим образом:
Строка 1:
WebDriver driver1 = new ChromeDriver();
Line2:
ChromeDriver driver2 = new ChromeDriver();
Мой сценарий ограничен для запуска тестовых случаев только в Chrome Driver, поэтому я никогда не буду использовать какой-либо другой браузер для тестирования. Таким образом, если я выберу Line2 в своем коде вместо Line1, будет ли это иметь какое-либо значение с точки зрения каких-либо функциональных возможностей или преимуществ (ищет любые дополнительные функциональные возможности, которые класс ChromDriver может предоставить в дополнение к существующим методам интерфейса WebDriver).
2 ответа
Драйвер ChromeDriver = новый ChromeDriver();
Если вы используете ChromeDriver driver = new ChromeDriver();
экземпляр ChromeDriver, который будет создан в результате этого, мы сможем вызывать и действовать только в отношении методов, реализованных в ChromeDriver и поддерживаемых только браузером Chrome. Для работы с другими браузерами мы должны специально создавать отдельные объекты, как показано ниже:
FirefoxDriver driver = new FirefoxDriver();
InternetExplorerDriver driver = new InternetExplorerDriver();
WebDriver Interface
С точки зрения Selenium, интерфейс WebDriver аналогичен соглашению, которое сторонние производители браузеров, такие как Mozilla, Chrome, Internet Explorer, Safari и т. Д., Должны придерживаться и реализовывать. Это, в свою очередь, поможет конечным пользователям использовать открытые API-интерфейсы для написания общего кода и реализации функций во всех доступных Browsers
без каких-либо изменений.
Зачем WebDriver driver = new ChromeDriver();
Через WebDriver driver = new ChromeDriver();
мы создаем экземпляр интерфейса WebDriver и приводим его к классу ChromeDriver. Все драйверы браузера, такие как FirefoxDriver, ChromeDriver, InternetExplorerDriver, PhantomJSDriver, SafariDriver и т. Д., Реализовали интерфейс WebDriver (фактически класс RemoteWebDriver реализует интерфейс WebDriver, а драйверы браузера расширяют RemoteWebDriver). Так что, если мы используем WebDriver driver
затем мы можем использовать уже инициализированный драйвер (как переменную общего объекта) для всех браузеров, которые мы хотим автоматизировать, например, Mozilla, Chrome, InternetExplorer, PhantomJS, Safari.
WebDriver driver = new FirefoxDriver();
driver = new ChromeDriver();
driver = new FirefoxDriver();
driver = new SafariDriver();
Этот вопрос
Теперь, как вы упомянули will never use any other browser for my testing purpose
вы можете вернуться к классу ChromDriver. Но на этом этапе стоит упомянуть, что ChromeDriver является автономным сервером, который реализует проводной протокол WebDriver для Chromium. Команда Chromium находится в процессе внедрения и перехода на стандарт W3C.
Таким образом, в дальнейшем ChromeDriver, GeckoDriver, IEDriverServer, OperaDriver, SafariDriver каждый вариант будет соответствовать только стандарту W3C.
Вы можете найти соответствующую дискуссию, в чем разница между ChromeDriver и WebDriver в селене?
IWebDriver
является Interface
а также ChromeDriver
это class
который реализует IWebDriver
, Также, ChromeDriver
может использоваться только для создания экземпляра Chrome
браузер, тогда как, IWebDriver
может представлять любой из поддерживаемых браузеров: (Firefox, IE, Edge...).
Конкретно в вашем случае я бы использовал: ChromeDriver driver2 = new ChromeDriver();
просто потому, что, как вы заявили, вы будете когда-либо использовать только Chrome
в вашем тестировании.
Здесь есть несколько отличных ответов.