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

### Вот некоторые распространенные методы 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/)
