Selenium – это мощный инструмент для автоматизации тестирования веб-приложений. Он позволяет имитировать действия пользователя в браузере, такие как клики по ссылкам, ввод текста в формы, переходы по страницам и т.д. Selenium поддерживает различные языки программирования, включая Python, Java, C#, и другие.
1. Создание Dockerfile. Сначала создайте Dockerfile, который описывает ваш образ, включая установку браузера (например, Chrome) и драйвера (например, ChromeDriver для Chrome).
FROM python:3.8-slim # Установка зависимостей для Chrome RUN apt-get update && apt-get install -y \ wget \ gnupg \ xvfb \ libxi6 \ libgconf-2-4 # Установка Chrome RUN wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb RUN dpkg -i google-chrome-stable_current_amd64.deb; apt-get -fy install # Установка ChromeDriver RUN wget https://chromedriver.storage.googleapis.com/2.41/chromedriver_linux64.zip RUN unzip chromedriver_linux64.zip RUN mv chromedriver /usr/bin/chromedriver RUN chown root:root /usr/bin/chromedriver RUN chmod +x /usr/bin/chromedriver # Установка Selenium RUN pip install selenium # Установка вашего приложения WORKDIR /app COPY . /app # Указание команды для запуска контейнера CMD ["python", "your_test_script.py"]
2. Сборка образа Docker. Используйте команду docker build для сборки образа из Dockerfile.
docker build -t selenium-docker .
3. Запуск контейнера Docker. Запустите контейнер из вашего образа.
docker run selenium-docker
Давайте рассмотрим пример теста для веб-сайта, используя Python и Selenium. В примере ниже мы напишем тест для открытия Google и выполнения поискового запроса.
from selenium import webdriver from selenium.webdriver.common.keys import Keys # Установка опций для Chrome options = webdriver.ChromeOptions() options.add_argument('--headless') # Запуск в фоновом режиме options.add_argument('--no-sandbox') options.add_argument('--disable-dev-shm-usage') # Инициализация драйвера driver = webdriver.Chrome('/path/to/chromedriver', options=options) # Открытие страницы Google driver.get("http://www.google.com") assert "Google" in driver.title # Находим поле для поиска elem = driver.find_element_by_name("q") # Вводим текст для поиска и имитируем нажатие Enter elem.send_keys("Selenium") elem.send_keys(Keys.RETURN) # Проверка результатов assert "No results found." not in driver.page_source # Закрытие браузера driver.close()
В этом коде мы создаем экземпляр Chrome WebDriver, открываем страницу Google, ищем поле для поиска, вводим в него текст и имитируем нажатие клавиши Enter. Затем проверяем, что результаты поиска действительно появились.
Это базовый пример использования Selenium. В реальных проектах вам может понадобиться более сложная логика для навигации по сайту, взаимодействия с элементами на странице и обработки данных.