无法在Django和Selenium Docker容器之间进行通信

时间:2020-08-26 21:01:17

标签: django docker selenium continuous-integration

我正在尝试建立一个CI环境,以便可以使用在docker中运行的硒测试Django应用程序。

我的测试设置如下:

from time import sleep
from django.contrib.staticfiles.testing import StaticLiveServerTestCase
from selenium.webdriver.remote.webdriver import WebDriver

class MySeleniumTests(StaticLiveServerTestCase):
    port = 8000


    @classmethod
    def setUpClass(cls):
        super().setUpClass()
        cls.selenium = WebDriver("http://selenium:4444", desired_capabilities={'browserName': 'chrome'})
        cls.selenium.implicitly_wait(10)

    @classmethod
    def tearDownClass(cls):
        cls.selenium.quit()
        super().tearDownClass()

    def test_login(self):
        self.selenium.get('%s:%s%s' % ('http://web', self.port, '/'))
        greeting = self.selenium.find_element_by_id("greeting")
        self.assertEqual(greeting.text, 'hello world')

然后我尝试使用.gitlab-ci.yml中的CI配置在gitlab上运行此代码:

image:
  name: docker/compose:1.26.2
  entrypoint: ['/bin/sh', '-c']

services:
  - docker:dind

variables:
  DOCKER_HOST: tcp://docker:2375
  DOCKER_DRIVER: overlay2

stages:
  - test

before_script:
  - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY

build:
  stage: test
  script:
    - docker build --tag django .

    - docker network create selenium-net
    - docker run -d --network selenium-net --name selenium selenium/standalone-chrome:4.0.0-alpha-6-20200730
    - docker run --network selenium-net --name web --expose 8000 django dindselenium/manage.py test myapp

在我的本地计算机上,连接WebDriver设置成功,但是Selenium无法连接到Web应用程序。在CI环境中,我什至无法从Web应用程序连接到Selenium。

我在此处设置了一个示例存储库:https://gitlab.com/oskarpersson/dind-selenium/,以及一个失败的示例:https://gitlab.com/oskarpersson/dind-selenium/-/jobs/705523165

0 个答案:

没有答案
相关问题