WEBDRIVER DRIVER = NEW FIREFOXDRIVER() – ПОЧЕМУ МЫ ПИСИМ В SELENIUM СКРИПТАХ

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

Содержание

 WEBDRIVER DRIVER = NEW FIREFOXDRIVER() – ПОЧЕМУ МЫ ПИСЕМ В SELENIUM СКРИПТАХ

В этом посте мы обсудим следующие моменты.

Java Учебное пособие для тестировщиков Selenium

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

WEBDRIVER DRIVER = NEW FIREFOXDRIVER() – ПОЧЕМУ МЫ ПИСЕМ В SELENIUM СКРИПТАХ

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

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

Необходимо изучить: архитектура Selenium WebDriver

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

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

Почему бы не использовать драйвер WebDriver = new WebDriver()

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

Driver driver = new WebDriver();

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

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

FirefoxDriver driver = new FirefoxDriver();

или

< em>Драйвер WebDriver = новый FirefoxDriver();

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

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

Драйвер FirefoxDriver = новый FirefoxDriver();

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

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

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

Драйвер InternetExplorerDriver = новый InternetExplorerDriver();

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

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

Почему драйвер WebDriver = new FirefoxDriver()< /h2>

Драйвер ChromeDriver = новый ChromeDriver();

Чтобы решить эту проблему, мы используем «Драйвер Webdriver = новый FirefoxDriver();»

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

Драйвер WebDriver = новый FirefoxDriver();

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

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

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

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

Пример:

WebDriver driver = new FirefoxDriver();
driver.quit();
driver = new ChromeDriver();

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

WebDriver driver = new FirefoxDriver();

Здесь WebDriver – интерфейс, driver – ссылочная переменная, 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 был запущен, но для использования других драйверов автономный сервер Selenium не требуется.

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

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

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

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

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

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

Пример: WebDriver driver = new RemoteWebDriver(new URL Desired options.firefox());

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

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

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

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

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

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

  • Вопросы на собеседовании по Selenium
  • Вопросы на собеседовании по Java
  • Вопросы на собеседовании по тестированию программного обеспечения
  • Вопросы на собеседовании по гибкому тестированию
  • Вопросы на собеседовании по SQL

TAG: qa

От QA genius

Adblock
detector