1

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.

0 Answers0