# Типы локаторов

Поскольку Webdriver - это инструмент для автоматизации веб приложений, то большая часть работы с ним это работа с веб элементами(WebElements). WebElements - ни что иное, как DOM объекты, находящиеся на веб странице. А для того, чтобы осуществлять какие-то действия над DOM объектами / веб елементами необходимо их точным образом определить(найти).

```
    WebElement element = driver.findElement(By.<Selector>);
```

Таким образом в Webdriver определяется нужный элемент. By - класс, содержащий статические методы для идентификации элементов:

1.By.id

Пример:

```
<div id="element_id">
     <p>some content</p>
</div>
```

Поиск элемента:

```
 WebElement element = driver.findElement(By.id("element_id"));
```

2.By.name

Пример:

```
<div name="element_name">
     <p>some content</p>
</div>
```

Поиск элемента:

```
WebElement element = driver.findElement(By.name("element_name"));
```

3.By.className

Пример:

```
<img class="element_class">
```

Поиск элемента:

```
WebElement element = driver.findElement(By.className("element_class"));
```

4.By.TagName

Пример:

```
<div>
     <a class="logo" ref="...">...</a>
     <a class="support" ref="...">...</a>
</div>
```

Поиск элемента:

```
List<WebElement> elements = driver.findElements(By.tagName("a"));
```

5.By.LinkText

Пример:

```
<div>
     <a ref="...">text</a>
     <a ref="...">Another text</a>
</div>
```

Поиск элемента:

`WebElement element = driver.findElement(By.linkText("text"));`

6.By.PartialLinkText

Поиск элемента:

`WebElement element = driver.findElements(By.partialLinkText("text"));`

7.By.cssSelector

```
<div class='main'>
     <p>text</p>
     <p>Another text</p>
</div>
```

Поиск элемента:

```
WebElement element=driver.FindElement(By.cssSelector("div.main"));
```

8.By.XPath

```
<div class='main'>
     <p>text</p>
     <p>Another text</p>
</div>
```

Поиск элемента:

```
WebElement element = driver.findElement(By.xpath("//div[@class='main']"));
```
