# Распространенные методы

### Вот некоторые распространенные методы SeleniumBase, которые вы можете найти в тестах:

### Переход на веб-страницу: (и соответствующие команды)

```
self.open("https://xkcd.com/378/")  # This method opens the specified page.

self.go_back()  # This method navigates the browser to the previous page.

self.go_forward()  # This method navigates the browser forward in history.

self.refresh_page()  # This method reloads the current page.

self.get_current_url()  # This method returns the current page URL.

self.get_page_source()  # This method returns the current page source.
```

**ProTip™:** Вы можете использовать `self.get_page_source()`метод с `find()`командой Python для анализа HTML, чтобы найти что-то конкретное. (Для более сложного разбора см . [пример BeautifulSoup](https://github.com/seleniumbase/SeleniumBase/blob/master/examples/test_parse_soup.py) .)

```
source = self.get_page_source()
head_open_tag = source.find('<head>')
head_close_tag = source.find('</head>', head_open_tag)
everything_inside_head = source[head_open_tag+len('<head>'):head_close_tag]
```

### Щелчок:

Чтобы щелкнуть элемент на странице:

```
self.click("div#my_id")
```

**ProTip™:** В большинстве веб-браузеров вы можете щелкнуть правой кнопкой мыши страницу и выбрать `Inspect Element`, чтобы просмотреть сведения о селекторе CSS, которые вам понадобятся для создания собственных сценариев.

### Ввод текста:

`self.type(selector, text)`# обновляет текст из указанного элемента с указанным значением. Исключение возникает, если элемент отсутствует или если текстовое поле недоступно для редактирования. Пример:

```
self.type("input#id_value", "2012")
```

Вы также можете использовать `self.add_text()`или команду WebDriver `.send_keys()`, но они не будут сначала очищать текстовое поле, если внутри уже есть текст. Если вы хотите ввести специальные клавиши, это тоже легко. Вот пример:

```
from selenium.webdriver.common.keys import Keys
self.find_element("textarea").send_keys(Keys.SPACE + Keys.BACK_SPACE + '\n')  # The backspace should cancel out the space, leaving you with the newline
```

### Получение текста из элемента на странице:

```
text = self.get_text("header h2")
```

### Получение значения атрибута из элемента на странице:

```
attribute = self.get_attribute("#comic img", "title")
```

### Подтверждение существования элемента на странице в течение некоторого количества секунд:

```
self.wait_for_element_present("div.my_class", timeout=10)
```

(ПРИМЕЧАНИЕ. Вы также можете использовать: `self.assert_element_present(ELEMENT)`)

### Утверждение видимости элемента на странице в течение некоторого количества секунд:

```
self.wait_for_element_visible("a.my_class", timeout=5)
```

(ПРИМЕЧАНИЕ: краткие версии этого `self.find_element(ELEMENT)`и `self.assert_element(ELEMENT)`. Версия find\_element() возвращает элемент)

Поскольку строка выше возвращает элемент, вы можете комбинировать его с .click(), как показано ниже:

```
self.find_element("a.my_class", timeout=5).click()

# But you're better off using the following statement, which does the same thing
self.click("a.my_class")  # DO IT THIS WAY!
```

**ProTip™:** Вы можете использовать точки для обозначения имен классов (пример: `div.class_name`) в качестве упрощенной версии `div[class="class_name"]`в селекторе CSS.

Вы также можете использовать `*=`для поиска любого частичного значения в селекторе CSS, как показано ниже:

```
self.click('a[name*="partial_name"]')
```

### Утверждение видимости текста внутри элемента на странице в течение некоторого количества секунд:

```
self.assert_text("Make it so!", "div#trek div.picard div.quotes")
self.assert_text("Tea. Earl Grey. Hot.", "div#trek div.picard div.quotes", timeout=3)
```

(ПРИМЕЧАНИЕ: `self.find_text(TEXT, ELEMENT)`а `self.wait_for_text(TEXT, ELEMENT)`также сделайте это. Для обратной совместимости старые имена методов были сохранены, но время ожидания по умолчанию может быть другим.)

### Утверждая что-либо:

```
self.assert_true(myvar1 == something)

self.assert_equal(var1, var2)
```

### Полезные условные операторы: (с творческими примерами в действии)

is\_element\_visible(selector) # элемент виден на странице

```
if self.is_element_visible('div#warning'):
    print("Red Alert: Something bad might be happening!")
```

is\_element\_present(selector) # элемент присутствует на странице

```
if self.is_element_present('div#top_secret img.tracking_cookie'):
    self.contact_cookie_monster()  # Not a real SeleniumBase method
else:
    current_url = self.get_current_url()
    self.contact_the_nsa(url=current_url, message="Dark Zone Found")  # Not a real SeleniumBase method
```

Другой пример:

```
def is_there_a_cloaked_klingon_ship_on_this_page():
    if self.is_element_present("div.ships div.klingon"):
        return not self.is_element_visible("div.ships div.klingon")
    return False
```

Полный список методов SeleniumBase см. в разделе [**Обзор методов .**](https://seleniumbase.io/help_docs/method_summary/)


---

# Agent Instructions: 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:

```
GET https://igor-19.gitbook.io/qa/avtomatizaciya-testirovaniya/python/seleniumbase/rasprostranennye-metody.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
