首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Gitlab CI中运行selenium测试

在Gitlab CI中运行selenium测试
EN

Stack Overflow用户
提问于 2021-07-21 21:32:33
回答 1查看 325关注 0票数 2

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

代码语言:javascript
复制
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)

代码语言:javascript
复制
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

代码语言:javascript
复制
driver = webdriver.Remote("http://selenium:4444/wd/hub", DesiredCapabilities.FIREFOX)
server = 'http://dvwa:80'
driver.get(server + '/login.php')

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

代码语言:javascript
复制
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.
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-26 15:12:00

在GitLab CI中,阶段是按顺序执行的。仅当上一阶段成功完成时,才进入下一阶段。

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

代码语言:javascript
复制
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容器。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68470451

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档