Для создания автоматизированного теста для проверки сортировки товаров по цене на сайте, вы можете воспользоваться инструментами для автоматизации браузера, такими как Selenium WebDriver. Ниже приведен пример, который демонстрирует, как это можно сделать на Python с использованием библиотеки Selenium.
### Шаги для создания теста:
1. **Установите необходимые библиотеки**:
Убедитесь, что у вас установлен Python и библиотека Selenium, а также драйвер для вашего браузера (например, ChromeDriver для Google Chrome).
```bash
pip install selenium
```
2. **Напишите тест**:
Ниже приведен пример кода, который открывает страницу, щелкает на элемент для сортировки, выбирает пункт сортировки по возрастанию и убыванию цены и проверяет, правильно ли сортируются товары.
```python
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
# Функция для проверки сортировки
def check_sorting(order):
# Открытие браузера
driver = webdriver.Chrome()
driver.get("https://arnypraht.com/category/bags/")
# Поиск элемента для сортировки
sort_element = WebDriverWait(driver, 10).until(
EC.element_to_be_clickable((By.XPATH, "//span[contains(text(), 'Сортировать по')]"))
)
sort_element.click()
# Выбор нужного метода сортировки
if order == 'asc':
sort_option = WebDriverWait(driver, 10).until(
EC.element_to_be_clickable((By.XPATH, "//li[contains(text(), 'Цена по возрастанию')]"))
)
else:
sort_option = WebDriverWait(driver, 10).until(
EC.element_to_be_clickable((By.XPATH, "//li[contains(text(), 'Цена по убыванию')]"))
)
sort_option.click()
time.sleep(2) # Ждать, чтобы страница подгрузилась
# Получение цен всех товаров после сортировки
prices = driver.find_elements(By.XPATH, "//span[@class='price']") # Предположим, что цена находится в span с классом 'price'
price_values = [float(price.text.replace('₽','').replace(' ', '')) for price in prices]
# Проверка сортировки
if order == 'asc':
assert price_values == sorted(price_values), "Товары не отсортированы по возрастанию цены"
print("Товары отсортированы по возрастанию цены успешно.")
else:
assert price_values == sorted(price_values, reverse=True), "Товары не отсортированы по убыванию цены"
print("Товары отсортированы по убыванию цены успешно.")
driver.quit()
# Запуск проверки
check_sorting('asc') # Проверка по возрастанию
check_sorting('desc') # Проверка по убыванию
```
### Примечания:
1. **XPath**: Убедитесь, что XPath корректен и соответствует структуре HTML на сайте. Вы можете использовать инструменты разработчика в вашем браузере, чтобы найти правильные идентификаторы или классы для элементов.
2. **Производительность**: Временные ожидания (например, `time.sleep(2)`) можно заменить более элегантными подходами (как в примере с `WebDriverWait`), которые будут ждать появления элементов, прежде чем продолжить выполнение скрипта.
3. **Сортировка в зависимости от валюты**: Обратите внимание на форматирование цен; вам может потребоваться адаптировать код в зависимости от формата отображаемой цены на сайте.
4. **Тестирование**: Запустите тест, чтобы убедиться, что он работает правильно и валидирует сортировку цен корректно.
Эти шаги и пример кода помогут вам создать автоматизированный тест для проверки функционала сортировки товаров по цене.