Docker selenium не перенаправляет на другую страницу в тесте django
У меня есть некоторые проблемы с docker selenium. Например, я пробовал на локальном селениуме с помощью operadriver, так перенаправление на другую страницу, после отправки формы, работало. Я хочу увидеть этот результат и в django selenium test, но я просто получаю selenium.common.exceptions.TimeoutException: Message:
в ожидании, когда url изменится.
Вот мой тестовый код
import os
import socket
import shutil
# from pyvirtualdisplay import Display
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.chrome.options import Options
from django.test import LiveServerTestCase
from django.conf import settings
# Create your tests here.
class LandFormTest(LiveServerTestCase):
host = socket.gethostbyname(socket.gethostname())
def setUp(cls):
selenium_url = 'http://selenium:4444/wd/hub'
options = Options()
options.add_argument('--no-sandbox')
options.add_argument('--headless')
options.add_argument("--disable-dev-shm-usage")
options.add_argument("--ignore-certificate-errors")
# options.add_argument("My user agent")
options.add_argument(f"window-size=1920,1080")
cls.driver = webdriver.Remote(
command_executor=selenium_url,
desired_capabilities=DesiredCapabilities.CHROME,
options=options
)
def test_form(self):
try:
driver = self.driver
domain = self.live_server_url.split('//')[1].split(':')[0]
if not settings.BASE_DIR.joinpath(f'templates/lands/{domain}').is_dir():
src = f'templates/lands/quantum.localhost'
dest = f'templates/lands/{domain}'
shutil.copytree(src, dest)
driver.get(f'{self.live_server_url}/api/v1/test/?ai=2&gi=5')
user_firstname = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.NAME, "firstname"))
)
current_url = driver.current_url
user_firstname = driver.find_element(By.NAME, 'firstname')
user_lastname = driver.find_element(By.NAME, 'lastname')
user_email = driver.find_element(By.NAME, 'email')
user_phone = driver.find_element(By.NAME, 'phone')
user_firstname.send_keys('test')
user_lastname.send_keys('test')
user_email.send_keys('test@gmail.com')
user_phone.send_keys('+(846)411-36-00')
user_phone.submit()
WebDriverWait(driver, 10).until(EC.url_changes(current_url))
print(driver.current_url)
print(driver.page_source)
assert 'Hello World' in driver.page_source
except Exception as e:
raise(e)
def tearDown(self):
self.driver.quit()
Мой /api/v1/test/
url получает static и template в папке по имени домена, поэтому я копирую папку по умолчанию "quantum.localhost" и переименовываю ее в ip докера. Основная проблема в том, что локально работает с драйвером, но не с docker и django. Хочу заметить, что я также пытался использовать firefox selenium. Спасибо за помощь!