В этом посте мы увидим, почему в сценариях Selenium мы пишем WebDriver driver = new FirefoxDriver(). Многие студенты задавали этот вопрос, и я хотел бы поделиться здесь несколькими моментами.
В этом посте мы обсудим следующие моменты.
Java Учебник для тестировщиков 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