I tried printing a get req to google and it printed None. I believe it is a problem with the chrome driver setup itself. here is the code
----------------------------------------------------------------------
Ran 1 test in 7.654s
FAILED (errors=1)
Destroying test database for alias 'default'...
tests>docker-compose run --rm app sh -c "python manage.py test functional_tests"
Starting public-site-tests_db_1 ... done
Starting public-site-tests_selenium_1 ... done
Creating test database for alias 'default'...
System check identified no issues (0 silenced).
None
E
======================================================================
ERROR: test_login (src.functional_tests.test_logIn.LoginTest)
Lets test the user login feature
----------------------------------------------------------------------
Traceback (most recent call last):
File "/src/functional_tests/test_logIn.py", line 67, in test_login
email_field = self.browser.find_element_by_name('username')
File "/usr/local/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 496, in find_element_by_name
return self.find_element(by=By.NAME, value=name)
File "/usr/local/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 978, in find_element
'value': value})['value']
File "/usr/local/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "/usr/local/lib/python3.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"[name="username"]"}
(Session info: headless chrome=84.0.4147.105)
and here is the setup
chrome_options = Options()
chrome_options.add_argument("--no-sandbox")
chrome_options.add_argument("--headless")
chrome_options.add_argument("--window-size=1920,1080")
chrome_options.add_argument("--disable-extensions")
chrome_options.add_argument("--proxy-server='direct://'")
chrome_options.add_argument("--proxy-bypass-list=*")
chrome_options.add_argument("--start-maximized")
chrome_options.add_argument("--disable-gpu")
chrome_options.add_argument("--disable-dev-shm-usage")
chrome_options.add_argument("--ignore-certificate-errors")
class LoginTest(StaticLiveServerTestCase):
live_server_url = 'http://{}:8000'.format(
socket.gethostbyname(socket.gethostname())
)
def setUp(self):
# if os.environ.get('CI_JOB_NAME'):
# browser_name = webdriver.Chrome(chrome_options=True)
# if os.environ.get('CI_JOB_NAME') == 'e2e:chrome' else 'Firefox'
# self.browser = webdriver.Chrome(options=chrome_options)
settings.DEBUG = True
self.browser = webdriver.Remote(
command_executor="http://selenium:4444/wd/hub",
desired_capabilities=DesiredCapabilities.CHROME,
options=chrome_options)
self.login_url = self.live_server_url + '/accounts/login/'
self.LogIn = reverse('accounts:login')
self.user = get_user_model().objects.create_user(
mobile_number='999999910',
first_name='Clerk',
last_name='Kent',
email='realdork@superman.com',
password='test123123',
)
self.user.save()
def test_login(self):
"""Lets test the user login feature"""
login_page = self.browser.get(self.login_url)
time.sleep(10)
print(login_page)
email_field = self.browser.find_element_by_name('username')
finally the docker-compose
version: '3'
services:
app:
build:
context: .
ports:
- "8000:8000"
volumes:
- .:/src
command:
sh -c "python manage.py migrate &&
python manage.py runserver 0.0.0.0:8000"
depends_on:
- db
- selenium
db:
image: postgres:12-alpine
environment:
- POSTGRES_DB=''
- POSTGRES_USER=''
- POSTGRES_PASSWORD=''
selenium:
image: selenium/standalone-chrome-debug
ports:
- "5900:5900"
environment:
- SELENIUM_HOST=http://selenium:4444/wd/hub
- TEST_SELENIUM='yes'
i teried to add the environment in the app service too but the result is the same. I tried to print google.com and it printe None. I had a similar problem in local when the chrome path was wring and it would print out similar traceback error. Would really appriciate some help. Thnak you in advance.