atesting.ru Блог Драйвер WebDriver = новый FirefoxDriver () — Почему мы пишем на Selenium Scripts

Драйвер WebDriver = новый FirefoxDriver () — Почему мы пишем на Selenium Scripts

В этом посте мы видим, почему в скриптах Selenium мы пишем WebDriver driver = new FirefoxDriver () . Многие студенты задавали этот вопрос, и я хотел бы поделиться здесь несколькими моментами.

 Драйвер WebDriver = new FirefoxDriver () & ndash; Почему мы пишем в Selenium Scripts

Мы собираемся обсудить следующие пункты в этом сообщении.

Прежде чем вдаваться в подробности, давайте посмотрим на изображение ниже.

Драйвер WebDriver = new FirefoxDriver () & ndash; Почему мы пишем в Selenium Scripts

Ниже приведены несколько моментов, основанных на приведенном выше изображении.

  • SearchContext — самый лучший интерфейс в селене, который расширен другим интерфейсом, называемым WebDriver.
  • Все абстрактные методы интерфейсов SearchContext и WebDriver реализованы в классе RemoteWebDriver.
  • Все классы, относящиеся к браузеру, такие как FirefoxDriver, ChromeDriver и т. Д., Расширяет класс RemoteWebdriver.

WebDriver определяет общие методы, которые используют все классы браузеров (например, Firefox, Chrome и т. Д.). Все эти методы класса являются производными от интерфейса WebDriver.

Все абстрактные методы обоих интерфейсов реализованы в классе RemoteWebDriver, который расширяется такими классами браузера, как драйвер Firefox, драйвер Chrome и т. Д.

< h2 id = "h-why-not-webdriver-driver-new-webdriver"> Почему не WebDriver driver = new WebDriver ()

Давайте посмотрим, почему мы не можем использовать следующее заявление.

Драйвер WebDriver = new WebDriver ();

Мы не можем писать наш код таким образом, потому что мы не можем создать объект интерфейса. WebDriver — это интерфейс.

Но мы можем использовать любое из следующих операторов в нашем скрипте

FirefoxDriver driver = new FirefoxDriver ();

или

WebDriver driver = new FirefoxDriver ();

Давайте подробно рассмотрим их оба.

Почему мы не будем предпочитать драйвер FirefoxDriver = новый FirefoxDriver ()

FirefoxDriver driver = new FirefoxDriver ();

Экземпляр FirefoxDriver, созданный на основе вышеуказанного оператора, сможет вызывать и действовать только с методами, реализованными FirefoxDriver и поддерживаемыми только браузером Firefox. Мы знаем, что FirefoxDriver — это класс, который реализует все методы интерфейса WebDriver. Используя этот оператор, мы можем запускать наши скрипты только в браузере Firefox.

Чтобы работать с другими браузерами, мы должны специально создать отдельные объекты, как показано ниже:

ChromeDriver driver = new ChromeDriver ();

InternetExplorerDriver driver = new InternetExplorerDriver ();

Мы не просто запускать наши скрипты только в одном браузере. Мы используем несколько браузеров для кроссбраузерной совместимости. Нам нужна гибкость для использования других браузеров, таких как ChromeDriver () для работы в браузере Chrome и InternetExplorerDriver () для работы в браузере IE и т. Д.

Итак, как только вы запускаете браузер Firefox с помощью Драйвер FirefoxDriver = новый FirefoxDriver (); тот же объект нельзя использовать для запуска браузера Chrome (вы должны его переименовать)

Почему драйвер WebDriver = новый FirefoxDriver ()

< em> ChromeDriver driver = new ChromeDriver ();

Чтобы решить эту проблему, мы используем « Webdriver driver = new FirefoxDriver (); «

Давайте посмотрим на это сейчас.

Драйвер WebDriver = new FirefoxDriver ();

Мы можем создать объект класса FirefoxDriver, взяв ссылку на интерфейс (WebDriver). В этом случае мы можем вызывать реализованные методы интерфейса WebDriver.

Согласно приведенному выше утверждению, мы создаем экземпляр интерфейса WebDriver и преобразуем его в класс FirefoxDriver. Все другие драйверы браузера, такие как ChromeDriver, InternetExplorerDriver, PhantomJSDriver, SafariDriver и т. Д., Реализовали интерфейс WebDriver (на самом деле класс RemoteWebDriver реализует интерфейс WebDriver, а драйверы браузера расширяет RemoteWebDriver). На основе этого утверждения вы можете назначить драйвер Firefox и запустить сценарий в браузере Firefox (любой браузер зависит от вашего выбора).

Мы увидим RemoteWebDriver в следующем разделе ниже.

Если вы определяете драйвер как WebDriver, переключение будет очень простым. Если мы используем этот оператор в нашем скрипте, тогда драйвер WebDriver может реализовать любой браузер. Каждый класс драйвера браузера реализует интерфейс WebDriver, и мы можем получить все методы. Это поможет вам при тестировании в нескольких браузерах.

Пример:

Драйвер WebDriver = новый FirefoxDriver ();
driver.quit ();
driver = new ChromeDriver ();

WebDriver — это интерфейс, и все методы, объявленные в интерфейсе Webdriver, реализуются соответствующим классом драйвера. Но если мы сделаем апкастинг, мы сможем запускать сценарии в любом браузере, т.е. запускать одни и те же сценарии автоматизации в разных браузерах для достижения полиморфизма времени выполнения.

WebDriver driver = new FirefoxDriver ();

Здесь WebDriver — интерфейс, драйвер — ссылочная переменная, FirefoxDriver () — это конструктор, new — ключевое слово, а new FirefoxDriver () — это объект.

Общая информация: Selenium WebDriver — это интерфейс, который содержит различные методы (например, get (), getTitle (), close () и т. д., ). Все сторонние поставщики браузеров реализуют эти методы в дополнение к методам, специфичным для их браузеров. Это, в свою очередь, поможет конечным пользователям использовать открытые API-интерфейсы для написания общего кода и реализации функций во всех доступных браузерах без каких-либо изменений. Разработчики Selenium не знают, как работают все эти браузеры. Поэтому разработчики Selenium просто объявляют методы, которые им необходимы, а часть реализации оставляют разработчикам браузеров.

Разница между WebDriver и RemoteWebDriver

Согласно концепции интерфейса Java , Интерфейс содержит только сигнатуру метода и не содержит определений метода.

Проверьте этот пост, чтобы узнать разницу между объявлением метода и определением метода.

WebDriver — это интерфейс, который содержит все сигнатуры метода Selenium (например, findElement (), switchTo (), get () и т. Д.), Где как определение этих методов находится в классе RemoteWedDriver.

Если мы хотим запустить наши сценарии автоматизации в браузере локального компьютера, мы можем использовать любой класс (например, Firefoxdriver, iedriver, chromedriver, htmlunitdriver), кроме RemoteWebDriver. WebDriver запустит веб-браузер на компьютере, на котором код создает его экземпляр.

Если мы хотим запускать наши сценарии автоматизации в браузере удаленного компьютера, мы используем RemoteWebDriver. RemoteWebDriver требует, чтобы Selenium Standalone Server был запущен, но для использования других драйверов Selenium Standalone Server не требуется.

Если вы хотите работать с Grid, вам нужно придерживаться RemoteWebDriver. Единственное требование — чтобы RemoteWebDriver работал, он всегда должен указывать на URL-адрес Grid.

Если вы используете какой-либо из драйверов, кроме RemoteWebDriver, то обмен данными будет происходить в браузере локального компьютера.

Пример: Webdriver driver = new FirefoxDriver ();

драйвер будет напрямую обращаться к Firefox на локальном компьютере.

Что такое RemoteWebDriver и где мы его используем

Если мы используем RemoteWebDriver, то у нас есть чтобы указать, где расположен Selenium Server и какой веб-браузер вы хотите использовать.

Пример: Драйвер WebDriver = новый RemoteWebDriver (новый URL-адрес Desired features.firefox ());

Мы можем использовать RemoteWebDriver так же, как мы бы использовали WebDriver локально. Основное отличие состоит в том, что удаленный веб-драйвер необходимо настроить таким образом, чтобы он мог запускать ваши тесты на удаленном компьютере.

WebDriver — это интерфейс, который вы должны использовать на протяжении всех ваших тестов. RemoteWebDriver — это конкретная реализация этого интерфейса. В общем, всегда полезно кодировать с учетом интерфейсов везде, где это возможно.

Надеюсь, вы все поняли. Если вам понравился этот пост, не забудьте поделиться им.

Вам также может понравиться это:

  • Dynamic XPath — полное руководство
  • JavaScriptExecutor — Полное руководство.
  • Как получить преимущество BrowserStack в Selenium.
  • Изучите тестирование API за 10 минут.

Популярные вопросы на собеседовании

  • Вопросы для собеседований по Selenium
  • Вопросы для собеседований по Java
  • Вопросы для собеседований по тестированию программного обеспечения
  • Вопросы для собеседований по Agile Testing
  • SQL Interview Вопросы

TAG: qa