WEBDRIVER DRIVER = NEW FIREFOXDRIVER() – ПОЧЕМУ МЫ ПИШЕМ В СЦЕНАРИЯХ SELENIUM

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

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

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

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

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

WEBDRIVER DRIVER = NEW FIREFOXDRIVER() &ndash ; ПОЧЕМУ МЫ ПИШЕМ В СЦЕНАРИЯХ SELENIUM

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

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

Обязательно выучите: архитектура Selenium WebDriver

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

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

Почему not WebDriver driver = new WebDriver()

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

WebDriver driver = new WebDriver();< /p>

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

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

FirefoxDriver driver = new FirefoxDriver();

или

< эм>Драйвер WebDriver = new FirefoxDriver();

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

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

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

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

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

ChromeDriver driver = new ChromeDriver();

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

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

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

Почему драйвер WebDriver = new 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 driver = new 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 = new FirefoxDriver();

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

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

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

Пример: драйвер WebDriver = new RemoteWebDriver(новый URL-адрес желаемых возможностей.firefox());

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

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

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

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

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

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

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

TAG: qa

От QA genius

Adblock
detector