微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Gitlab CI 中运行 selenium 测试

如何解决在 Gitlab CI 中运行 selenium 测试

使用 gitlab 管道,我可以实现以下目标吗?

stages:
 - run-dvwa       # where I launch a web target using image of https://hub.docker.com/r/vulnerables/web-dvwa
 - run-selenium   # where I launch selenium using image selenium/standalone-firefox:latest
 - run-python     # where I run some py script to crawl dvwa end points

我可以按顺序运行上面的,这也意味着容器'run-dvwa'和'run-selenium'在进入'run-python'阶段时不能退出吗?

感谢您的建议或样品!

我的第一个版本 (2021.07.26.v1)


python-test:
  services:
    - name: registry.gitlab.com/xxxx-yyy-demo/zzzzz-demo/dvwa-devops-demo
      alias: dvwa
      entrypoint: ["/main.sh"]
    - name: selenium/standalone-firefox:latest
      alias: selenium
  stage: run
  image: python:3
  script:
    - curl http://dvwa:80/login.PHP
    - curl http://selenium:4444/wd/hub
    - pip install selenium
    - python tests.py

我的 test.py

driver = webdriver.Remote("http://selenium:4444/wd/hub",DesiredCapabilities.FIREFOX)
server = 'http://dvwa:80'
driver.get(server + '/login.PHP')

从我的测试来看,一切都过去了,直到 driver.get(...) 行,我得到了一个

Traceback (most recent call last):
  File "/builds/xxxx-yyy-demo/zzzzz-demo/dvwa-devops-demo/xxxx-yyy-demo/tests.py",line 42,in <module>
    driver.get(server + '/login.PHP')
  File "/usr/local/lib/python3.9/site-packages/selenium/webdriver/remote/webdriver.py",line 333,in get
    self.execute(Command.GET,{'url': url})
  File "/usr/local/lib/python3.9/site-packages/selenium/webdriver/remote/webdriver.py",line 321,in execute
    self.error_handler.check_response(response)
  File "/usr/local/lib/python3.9/site-packages/selenium/webdriver/remote/errorhandler.py",line 242,in check_response
    raise exception_class(message,screen,stacktrace)
selenium.common.exceptions.WebDriverException: Message: Reached error page: about:neterror?e=dnsNotFound&u=http%3A//dvwa/login.PHP&c=UTF-8&d=We%20can%E2%80%99t%20connect%20to%20the%20server%20at%20dvwa.

解决方法

在 GitLab CI 中,阶段是按顺序执行的。只有在前一阶段成功完成后才能进入下一阶段。

您的用例听起来更像是您可以从 services 中受益,例如像这样:

python-test:
  stage: test
  image: python:3
  variables:
    FF_NETWORK_PER_BUILD: 1
  services:
    - name: vulnerables/web-dvwa:latest
      alias: dvwa
    - name: selenium/standalone-firefox:latest
      alias: selenium
  before_script:
    - pip install selenium
  script:
    - python tests.py

请注意,您必须启用 network per-build 功能 (FF_NETWORK_PER_BUILD feature flag),以便 selenium 容器可以连接到 dvwa 容器。>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。