Добрый день!
Есть автотест на python selenium который просто авторизовывается на сайте. При написания автотеста я не использовал бинарник chromedriver, а указал пакет webdriver_manager, все работает отлично
Если запускать в докере надо еще устанавливать сам хром, если нет то как будет совершаться имитация действий в контейнере если нет хрома
Сам код автотеста
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
import time
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
#Ссылка на сайт где надо авторизоваться
driver.get('url')
# Блок ввода логина
time.sleep(2)
loginbox = driver.find_element(By.XPATH, '//*[@id="UserName"]')
loginbox.clear()
loginbox.send_keys('login')
# Блок ввода пароля
time.sleep(1)
passbox = driver.find_element(By.XPATH, '//*[@id="Password"]')
passbox.clear()
passbox.send_keys('password')
# Нажатие кнопки войти
submit_button = driver.find_element(By.CSS_SELECTOR, 'input[type=submit]').click()
# После авторизации через 20сек закроется браузер
time.sleep(20)
dockerfile
FROM python:3.9-alpine
WORKDIR /autotest
COPY requirements.txt . .
RUN python -m pip install --upgrade pip
RUN pip install -r requirements.txt
CMD [ "python", "test1.py" ]
requirements.txt
selenium
webdriver_manager
При попытке запустить контейнер вылазит следующая ошибка
Traceback (most recent call last):
File "/usr/local/lib/python3.9/site-packages/selenium/webdriver/common/service.py", line 71, in start
self.process = subprocess.Popen(cmd, env=self.env,
File "/usr/local/lib/python3.9/subprocess.py", line 951, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File "/usr/local/lib/python3.9/subprocess.py", line 1821, in _execute_child
raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: '/root/.wdm/drivers/chromedriver/linux64/106.0.5249/chromedriver'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/autotest/test1.py", line 8, in <module>
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
File "/usr/local/lib/python3.9/site-packages/selenium/webdriver/chrome/webdriver.py", line 69, in __init__
super().__init__(DesiredCapabilities.CHROME['browserName'], "goog",
File "/usr/local/lib/python3.9/site-packages/selenium/webdriver/chromium/webdriver.py", line 89, in __init__
self.service.start()
File "/usr/local/lib/python3.9/site-packages/selenium/webdriver/common/service.py", line 81, in start
selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in PATH. Please see https://chromedriver.chromium.org/home