首页 > 解决方案 > 在 GitlabCI 上运行测试时 ChromeDriver 出现问题

问题描述

我是 Gitlab CI 的新手,我正在尝试在提交时自动测试我的应用程序。

我不知道它是如何工作的,我知道它使用 docker 映像并运行您想要的命令。

我选择 node:8 图像开始(我正在做一个电子项目,也许有更好的图像)

问题是,如果我在我的计算机上运行命令“npm test”,它运行良好并且所有测试都通过,但它不适用于 gitlab ci 作业,我不知道为什么。

我在windows上开发这个,docker镜像使用linux,这可能是个问题吗?

该错误总是发生在 ChromeDriver 上。我查看了文件夹,发现只有一个exe,所以我下载了驱动程序的linux发行版并将其插入其中。我还在运行测试之前执行了驱动程序(在我的计算机中这不是必需的,它会自动执行),但仍然得到相同的错误。

我很迷茫。有什么替代方法可以工作吗?也许另一个码头形象?

我的 gitlab-ci.yml:

variables:
  VERSION_ID: '1.0.$CI_PIPELINE_ID'

stages:
  - build

build:
  image: node:8
  stage: build
  artifacts:
    paths:
      - $CI_PROJECT_DIR/dist/*.*
  script:
    - apt-get update
    - apt-get -y install libnss3-dev
    - npm install
    - chmod 0777 ./node_modules/.bin/mocha
    - chmod 0777 ./node_modules/electron-chromedriver/bin/chromedriver
    - ./node_modules/electron-chromedriver/bin/chromedriver&
    - npm test


获得的错误: 错误 测试代码(如果这是相关的) 测试

标签: electrongitlab-cispectron

解决方案


你可以用硒做什么?

例如,如果您的电子应用程序是一项民意调查,那么使用 selenium 您可以:

  • 验证投票应用显示 10 个问题。如果检测到负数小于 10,则抛出错误
  • 如果需要您的问题,您可以确保在按下提交按钮时,每个问题旁边都会出现红色警告。如果提交操作未触发警告和/或提交表单,则抛出错误。

硒的工作原理

  • 开发人员在 selenium 语言实现(java、nodejs、python 等)中创建一些测试
  • 选择了具有正确浏览器安装的机器(将称为 selenium 机器)。在这台机器上,必须至少安装一个浏览器及其各自的SeleniumDriver。OperaChromiunDriver 用于 Opera,FirefoxDriver 用于 Firefox 等
  • 在 selenium 机器中,您必须启动具有适当配置的 selenium 服务器。该服务器发布一种带有用户名和密码的 url
  • 从您的开发人员笔记本电脑上,您可以执行您的测试是使用配置的 selenium 机器。
  • 在开发人员阶段,您可以避免使用 selenium 服务器,因为您的笔记本电脑上已经存在所有必需的人员。但是,如果您在企业或组织中,则无法或不推荐在您的笔记本电脑上运行测试。想象一下你自己在凌晨 2:00 在你的笔记本电脑上运行你工作的所有 Web 应用程序的测试:s。另一方面,假设您的持续集成服务器在凌晨 2:00 运行了数十个测试,并将结果发送给您一个漂亮的仪表板。

你的问题

我在windows上开发这个,docker镜像使用linux,这可能是个问题吗?

Windows 不是开发的最佳选择。默认浏览器“向导”安装将帮助您进行开发,但如果您升级到下一阶段“测试/生产”,那么世界上没有任何像样的云提供商试图为硒测试或任何技术提供 WINDOWS。众所周知,Windows 中对 docker 的支持很差。我建议你使用https://elementary.io/的linux,这对于像我们这样的程序员来说非常酷!

我很迷茫。有什么替代方法可以工作吗?也许另一个码头形象?

您正在使用电子进行开发。Electron 是一种“浏览器”,因此 Selenium 是自动化测试的最佳选择。

问题是,如果我在我的计算机上运行命令“npm test”,它运行良好并且所有测试都通过,但它不适用于 gitlab ci 作业,我不知道为什么。

因为您的测试代码执行视觉测试,这需要一台具有视觉浏览器及其各自硒驱动程序的机器。


我必须做什么才能使它起作用?

www.browserstack.com

总而言之,browserstack 为您提供了一个带有许多桌面和安卓浏览器的 selenium 服务器。只需几行代码,您的测试将运行它 browserstack 云,您将拥有一个仪表板,其中包含结果和视频作为错误证明。

这里有一些替代方案:https ://alternative.me/browserstack

实现你自己的 selenium 服务器

正如我所说,您将需要一台具有用户界面、浏览器、硒驱动程序等的机器

无头浏览器

如果您没有机器或浏览器堆栈不适合您,您可以研究:无头浏览器

总而言之,无头浏览器是一种在内存中实现的浏览器,因此您可以在没有用户界面(azure、amazon、google 等)的 shell 中执行测试。

无论如何,您将需要 selenium 驱动程序和其他配置,以实现您的测试在没有用户界面或 chrome、firefox、opera 等的机器上运行

这种方法的缺点是浏览器在内存中实现。无法识别您的 Web 或 javascript 的一些很酷的功能。例如:拖放效果。如果没有用户界面,这将如何工作:S?如果只是简单的表格,Headless Browser可以帮助你。

这里有一些选项:


推荐阅读