В чем разница между WebDriver и WebElement в Selenium?

В чем разница между WebDriver и WebElement в Selenium?

Образец кода:

WebDriver driver = new FirefoxDriver();      
driver.get("http://www.google.com");      
WebElement s  = driver.findElement(By.name("q"));      
s.sendKeys("Packt Publishing");      
s.submit();

3 ответа

Решение

Интерфейс WebDriver

С точки зрения Selenium, интерфейс WebDriver похож на соглашение, которое сторонние производители браузеров, такие как Mozilla, Chrome, Internet Explorer, Safari и т. Д. Должны придерживаться и реализовывать. Это, в свою очередь, поможет конечным пользователям использовать открытые API-интерфейсы для написания общего кода и реализации функций во всех доступных Browsers без каких-либо изменений.


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

Через WebDriver driver = new FirefoxDriver(); мы создаем экземпляр интерфейса WebDriver и приводим его к классу FirefoxDriver. Все драйверы браузера, такие как 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();

Вы можете найти подробное обсуждение в:


Интерфейс WebElement

С точки зрения Selenium, WebElement представляет элемент HTML. Как правило, все операции, связанные с взаимодействием со страницей, будут выполняться через этот интерфейс.

WebElement - это абстракция, используемая для идентификации узлов Element и просто известная как элементы, когда она транспортируется по протоколу между удаленным и локальным концами. Идентификатор веб-элемента - это строковая константа, выраженная как:

"element-6066-11e4-a52e-4f735466cecf"

Вы можете найти подробное обсуждение в значениях, возвращаемых веб-драйверами.

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

Объект ECMAScript представляет веб-элемент, если он имеет собственное свойство идентификатора веб-элемента.

Каждый контекст просмотра имеет связанный список известных элементов. Когда контекст просмотра отбрасывается, список известных элементов отбрасывается вместе с ним.

Вы можете найти подробное обсуждение в разделе Почему возвращаемый тип findElement(By by) равен WebElement?

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

  • clear()
  • click()
  • findElement(By by)
  • findElements(By by)
  • getAttribute(java.lang.String name)
  • getCssValue(java.lang.String propertyName)
  • getLocation()
  • getRect()
  • getSize()
  • getTagName()
  • getText()
  • isDisplayed()
  • isEnabled()
  • isSelected()
  • sendKeys(java.lang.CharSequence... keysToSend)
  • submit()

Класс WebDriver фокусируется на управлении браузером в широком смысле. Он загружает страницы, переключается на разные окна / фреймы, получает заголовок страницы и т. Д. Широкие действия, которые не относятся к элементу на странице.

WebElement концентрируется на взаимодействии с конкретным элементом, который вы нашли. Вещи как:

  • Нажав на этот конкретный элемент
  • Извлечение текста и других значений из этого конкретного элемента
  • Выяснение, где этот конкретный элемент расположен
  • Отправка текста на этот конкретный элемент (например, заполнение поля ввода)

Единственное реальное совпадение между WebDriver и WebElement - это методы findElement и findElements. Для Webdriver эти методы определяют местоположение By в любом месте страницы. Для WebElement эти методы размещают данное By в контексте этого элемента (обычно внутри него).

Простой ответ:

  • WebDriver фокусируется на управлении браузером.
  • WebElement - это просто объект элемента документа, например <button></button>
Другие вопросы по тегам