Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Empty file added lesson3/__init__.py
Empty file.
Empty file added lesson3/waits/__init__.py
Empty file.
Empty file added lesson3/waits/hw3/__init__.py
Empty file.
72 changes: 72 additions & 0 deletions lesson3/waits/hw3/test_expl_wait.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import pytest


@pytest.fixture
def chrome_options():
options = Options()
options.add_argument("--incognito")
options.add_argument("--window-size=1920,1080")
return options


@pytest.fixture
def driver(chrome_options):
driver = webdriver.Chrome(options=chrome_options)
yield driver
driver.quit()


@pytest.fixture
def wait(driver):
wait = WebDriverWait(driver, timeout=10)
return wait


def test_registration(driver, wait):
# Перейти по URL: Открыть в браузере указанный URL сайта https://victoretc.github.io/selenium_waits/
# Проверить заголовок: Убедиться, что текст в теге
driver.get("https://victoretc.github.io/selenium_waits/")
title = driver.find_element(By.XPATH, "//h1[text()= 'Практика с ожиданиями в Selenium']")
assert title.text == 'Практика с ожиданиями в Selenium'

# Дождаться появления кнопки "Начать тестирование"
# Найти кнопку: Найти на странице кнопку с текстом "Начать тестирование".
begin_test_btn = wait.until(EC.visibility_of_element_located((By.XPATH, "//button[@id='startTest']")))
assert begin_test_btn.is_displayed()
assert begin_test_btn.text == 'Начать тестирование'

# Кликнуть по кнопке "Начать тестирование".
begin_test_btn.click()
login = wait.until(EC.visibility_of_element_located((By.XPATH, "//*[@for='login']")))

assert login.is_displayed()

# Ввести "login" в поле для логина.
login_field = driver.find_element(By.XPATH, "//*[@id='login']")
login_field.send_keys("email")

# Ввести "password" в поле для пароля.
password_field = driver.find_element(By.XPATH, "//*[@id='password']")
password_field.send_keys("password")

# Установить флажок в чекбокс "Согласен со всеми правилами".
check_box_agree = driver.find_element(By.XPATH, "//*[@id='agree']")
check_box_agree.click()

# Нажать кнопку "Зарегистрироваться".
registration_btn = driver.find_element(By.XPATH, "//*[@id='register']")
registration_btn.click()

# Удостовериться, что появился индикатор загрузки.
loader_indicator = driver.find_element(By.XPATH, "//*[@id='loader']")
assert loader_indicator.is_displayed()

# Убедиться, что после завершения загрузки появилось сообщение "Вы успешно зарегистрированы".
success_registration = wait.until(EC.visibility_of_element_located((By.XPATH, "//*[@id='successMessage']")))
assert success_registration.is_displayed()
assert success_registration.text == 'Вы успешно зарегистрированы!'
116 changes: 116 additions & 0 deletions lesson3/waits/hw3/test_impl_wait.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
import time

from selenium.webdriver.common.by import By
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import pytest


@pytest.fixture
def chrome_options():
options = Options()
options.add_argument("--incognito")
options.add_argument("--window-size=1920,1080")
return options


@pytest.fixture
def driver(chrome_options):
driver = webdriver.Chrome(options=chrome_options)
driver.implicitly_wait(10)
yield driver
driver.quit()


def test_registration(driver):
# Перейти по URL: Открыть в браузере указанный URL сайта https://victoretc.github.io/selenium_waits/
# Проверить заголовок: Убедиться, что текст в теге
driver.get("https://victoretc.github.io/selenium_waits/")
title = driver.find_element(By.XPATH, "//h1[text()= 'Практика с ожиданиями в Selenium']")
assert title.text == 'Практика с ожиданиями в Selenium'

# Дождаться появления кнопки "Начать тестирование"
# Найти кнопку: Найти на странице кнопку с текстом "Начать тестирование".
# Кликнуть по кнопке "Начать тестирование".
start_test_btn = driver.find_element(By.XPATH, "//button[@id='startTest']")
start_test_btn.click()

login = driver.find_element(By.XPATH, "//*[@for='login']")
assert login.is_displayed()

# Ввести "login" в поле для логина.
login_field = driver.find_element(By.XPATH, "//*[@id='login']")
login_field.send_keys("email")

# Ввести "password" в поле для пароля.
password_field = driver.find_element(By.XPATH, "//*[@id='password']")
password_field.send_keys("password")

# Установить флажок в чекбокс "Согласен со всеми правилами".
check_box_agree = driver.find_element(By.XPATH, "//*[@id='agree']")
check_box_agree.click()

# Нажать кнопку "Зарегистрироваться".
registration_btn = driver.find_element(By.XPATH, "//*[@id='register']")
registration_btn.click()

# Удостовериться, что появился индикатор загрузки.
loader_indicator = driver.find_element(By.XPATH, "//*[@id='loader']")
assert loader_indicator.is_displayed()

time.sleep(5)

# Убедиться, что после завершения загрузки появилось сообщение "Вы успешно зарегистрированы".
success_registration = driver.find_element(By.XPATH, "//*[@id='successMessage']")
assert success_registration.is_displayed()
assert success_registration.text == 'Вы успешно зарегистрированы!'


def test_registration1(driver):
try:
# 1. Переходим на сайт
driver.get('https://victoretc.github.io/selenium_waits/')

# 2. Проверяем заголовок страницы
assert "Практика Selenium" in driver.title, "Заголовок страницы не совпадает"

# 3. Ждем появления кнопки "Начать тестирование"
# Убедимся, что кнопка присутствует на странице
start_testing_button = driver.find_element(By.XPATH, "//button[text()='Начать тестирование']")

# 4. Кликаем по кнопке "Начать тестирование"
start_testing_button.click()

# 5. Вводим логин в поле для логина
login_field = driver.find_element(By.XPATH, "//*[@id='login']")
login_field.send_keys('login')

# 6. Вводим пароль в поле для пароля
password_field = driver.find_element(By.XPATH, "//*[@id='password']")
password_field.send_keys('password')

# 7. Устанавливаем флажок "Согласен со всеми правилами"
agree_checkbox = driver.find_element(By.XPATH, "//*[@id='agree']")
if not agree_checkbox.is_selected():
agree_checkbox.click()

# 8. Нажимаем кнопку "Зарегистрироваться"
register_button = driver.find_element(By.XPATH, "//*[@id='register']")
register_button.click()

# 9. Проверяем наличие индикатора загрузки
loading_indicator = driver.find_element(By.XPATH, "//*[@id='loader']") # Пример ID для индикатора
assert loading_indicator.is_displayed(), "Индикатор загрузки не отображается"

# 10. Ждем завершения загрузки и появления сообщения о успешной регистрации
time.sleep(5) # Ожидаем, что индикатор загрузки исчезнет

# 11. Проверяем сообщение о успешной регистрации
success_message = driver.find_element(By.XPATH, "//*[@id='successMessage']")
assert success_message.is_displayed(), "Сообщение об успешной регистрации не появилось"

print("Тест прошел успешно!")

finally:
# Закрываем браузер
driver.quit()
79 changes: 79 additions & 0 deletions lesson3/waits/hw3/test_practice_waits.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
import pytest
from selenium.webdriver.chrome.options import Options
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC


@pytest.fixture
def chrome_options():
options = Options()
options.add_argument("--window-size=1900x1000")
return options


@pytest.fixture
def driver(chrome_options):
driver = webdriver.Chrome(options=chrome_options)
driver.implicitly_wait(10)
yield driver
driver.quit()


@pytest.fixture
def wait(driver):
wait = WebDriverWait(driver, timeout=10)
return wait


def test1(driver, wait):
driver.get("https://www.selenium.dev/selenium/web/dynamic.html")
add_box_locator = "//*[@value = 'Add a box!']"
box_locator = "//div[contains(@id, 'box')]"

add_box = wait.until(EC.visibility_of_element_located((By.XPATH, add_box_locator)))
assert add_box.is_displayed()
assert add_box.get_attribute("value") == 'Add a box!'

lst = []
add_box.click()
box = wait.until(EC.visibility_of_element_located((By.XPATH, box_locator)))
lst.append(box)
count = 1

add_box.click()
lst.append(box)
count += 1
assert len(lst) == count


def test2(driver, wait):
driver.get("https://demoqa.com/dynamic-properties")
will_enable_5sec_locator = "//*[@id = 'enableAfter']"

will_enable_5sec_btn = wait.until(EC.visibility_of_element_located((By.XPATH, will_enable_5sec_locator)))
assert will_enable_5sec_btn.is_displayed()


def test3(driver, wait):
driver.get("https://the-internet.herokuapp.com/dynamic_loading")
assert driver.title == "The Internet"

hidden_element_locator = "//*[contains(text(), 'Element on page that is hidden')]"
start_btn_locator = "//*[contains(text(), 'Start')]"
loading_indicator_locator = "//*[@id = 'loading']"
hello_world_locator = "//*[contains(text(), 'Hello World!')]"

hidden_element = wait.until(EC.element_to_be_clickable((By.XPATH, hidden_element_locator)))
hidden_element.click()

start_btn = wait.until(EC.element_to_be_clickable((By.XPATH, start_btn_locator)))
assert start_btn.is_enabled()
start_btn.click()

loading_indicator = wait.until(EC.visibility_of_element_located((By.XPATH, loading_indicator_locator)))
assert loading_indicator.is_displayed()

hello_world = wait.until(EC.visibility_of_element_located((By.XPATH, hello_world_locator)))
assert hello_world.is_displayed()
53 changes: 53 additions & 0 deletions lesson3/waits/hw3/test_time_sleep.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
import time
from selenium.webdriver.common.by import By


def test_registration(driver):
# Перейти по URL: Открыть в браузере указанный URL сайта https://victoretc.github.io/selenium_waits/
# Проверить заголовок: Убедиться, что текст в теге
driver.get("https://victoretc.github.io/selenium_waits/")
title = driver.find_element(By.XPATH, "//h1[text()= 'Практика с ожиданиями в Selenium']")
assert title.text == 'Практика с ожиданиями в Selenium'
time.sleep(5)

# Дождаться появления кнопки "Начать тестирование"
# Найти кнопку: Найти на странице кнопку с текстом "Начать тестирование".
begin_test_btn = driver.find_element(By.XPATH, "//button[@id='startTest']")
assert begin_test_btn.is_displayed()
assert begin_test_btn.text == 'Начать тестирование'

# Кликнуть по кнопке "Начать тестирование".
begin_test_btn.click()
time.sleep(5)
login = driver.find_element(By.XPATH, "//*[@for='login']")
assert login.is_displayed()

# Ввести "login" в поле для логина.
login_field = driver.find_element(By.XPATH, "//*[@id='login']")
login_field.send_keys("email")
time.sleep(3)

# Ввести "password" в поле для пароля.
password_field = driver.find_element(By.XPATH, "//*[@id='password']")
password_field.send_keys("password")
time.sleep(3)

# Установить флажок в чекбокс "Согласен со всеми правилами".
check_box_agree = driver.find_element(By.XPATH, "//*[@id='agree']")
check_box_agree.click()
time.sleep(3)

# Нажать кнопку "Зарегистрироваться".
registration_btn = driver.find_element(By.XPATH, "//*[@id='register']")
registration_btn.click()
time.sleep(2)

# Удостовериться, что появился индикатор загрузки.
loader_indicator = driver.find_element(By.XPATH, "//*[@id='loader']")
assert loader_indicator.is_displayed()
time.sleep(5)

# Убедиться, что после завершения загрузки появилось сообщение "Вы успешно зарегистрированы".
success_registration = driver.find_element(By.XPATH, "//*[@id='successMessage']")
assert success_registration.is_displayed()
assert success_registration.text == 'Вы успешно зарегистрированы!'
13 changes: 7 additions & 6 deletions lesson3/waits/test_expl.py
Original file line number Diff line number Diff line change
@@ -1,32 +1,33 @@
# Явные ожидания
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import pytest


@pytest.fixture
def chrome_options():
options = Options()
options.add_argument('--start-maximized')
return options


@pytest.fixture
def driver(chrome_options):
driver = webdriver.Chrome(options=chrome_options)
return driver


@pytest.fixture
def wait(driver):
wait = WebDriverWait(driver, timeout=10)
return wait


def test_visible_after_with_explicit_waits(driver, wait):
driver.get('https://demoqa.com/dynamic-properties')
visible_after_button = wait.until(EC.element_to_be_clickable((By.XPATH, "//button[text()='Visible After 5 Seconds']")))
visible_after_button = wait.until(
EC.element_to_be_clickable((By.XPATH, "//button[text()='Visible After 5 Seconds']")))
assert visible_after_button.text == 'Visible After 5 Seconds'





Loading