> For the complete documentation index, see [llms.txt](https://comaqa.gitbook.io/selenium-webdriver-lectures/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://comaqa.gitbook.io/selenium-webdriver-lectures/selenium-webdriver.-vvedenie/osnovnye-metody-selenium-webdriver-api.md).

# Основные методы Selenium Webdriver API

Основными понятиями в Selenium Webdriver являются:

* Webdriver - самая важная сущность, ответственная за управление браузером. Основной ход скрипта/теста строится именно вокруг экземпляра этой сущности.
* Webelement - вторая важная сущность, представляющая собой абстракцию над веб-элементом (кнопки, ссылки, поля ввода и др.). Webelement инкапсулирует методы для взаимодействия пользователя с элементами и получения их текущего статуса.
* By - абстракция над локатором веб-элемента. Этот класс инкапсулирует информацию о селекторе(например, CSS), а также сам локатор элемента, то есть всю информацию, необходимую для нахождения нужного элемента на странице.

Сам процесс взаимодействия с браузером через Webdriver API довольно прост: 1. Нужно создать Webdriver: WebDriver driver = new ChromeDriver(); При выполнении этой команды будет запущен Chrome, при условии, что он установлен в директорию по умолчанию и путь к ChromeDriver сохранен в системной переменной PATH.

1. Необходимо открыть тестируемое приложение (AUT), перейдя по URL: driver.get("<http://mycompany.site.com>"); Теоретически в хроме при этом должен открыться сайт компании. Обратите внимание, что URL приложения необходимо указать полностью, включая префикс.
2. Далее следует серия действий по нахождению элементов на странице и взаимодействию с ними: By elementLocator = By.id("#element\_id"); WebElement element = driver.findElement(elementLocator)); Или более кратко: WebElement element = driver.findElement(By.id("#element\_id"))); После нахождения элемента, кликнем по нему: element.click(); Далее следует совокупность похожих действий, как того требует сценарий.
3. В конце теста (часто также и в середине) должна быть какая-то проверка, которая и определит в конечном счёте результат выполнения теста: assertEquals("Webpage expected title", driver.getTitle()); Проверки может и не быть, если цель вашего скрипта - не тест, а выполнение какой-то рутины.
4. После теста надо закрыть браузер:

   ```
    driver.quit();
   ```

Следует отметить, что для поиска элементов доступно два метода: 1. Первый - найдёт только первый элемент, удовлетворяющий локатору: WebElement element = driver.findElement(By.id("#element\_id"))); 2. Второй - вернёт весь список элементов, удовлетворяющих запросу: List elements = driver.findElements(By.name("elements\_name"))

Более полную документацию Webdriver API можно найти по адресу: <http://selenium.googlecode.com/git/docs/api/java/index.html>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://comaqa.gitbook.io/selenium-webdriver-lectures/selenium-webdriver.-vvedenie/osnovnye-metody-selenium-webdriver-api.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
