【问题标题】:Problems with ChromeDriver when running test on GitlabCI在 Gitlab CI 上运行测试时 ChromeDriver 出现问题
【发布时间】:2020-05-16 17:45:07
【问题描述】:

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

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

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

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

我是在windows上开发的,docker镜像用的是linux,会不会有问题?

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

我很迷茫。有什么替代方法可以工作吗?可能是另一个 docker 镜像?

我的 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


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

【问题讨论】:

  • 嗨。如果您使用的是 chrome 驱动程序,当您运行本地测试(windows)时,会打开一个 chrome 浏览器并执行一些操作(单击、填写表单等),最后会退出浏览器并在您的 shell 中报告?
  • @JRichardsz 我现在不执行任何操作,但是是的,打开了一个 chrome 浏览器(它是一个电子应用程序,所以我想是等效的)
  • Chrome 驱动通常与 selenium 相关。 Selenium 通常用于质量保证团队,其目标是通过 web/html 表单和/或 javascript 代码进行可视化自动化(测试)。通常,这些测试是在打开的浏览器中执行的,人类可以看到在浏览器中执行的操作(就像有人在移动您的鼠标一样)。您的目标是:对您的电子应用程序进行可视化测试验证,还是只为您的 javascript 代码编写单元测试?
  • 是的,这就是目标。 @JRichardsz
  • 您的电子应用程序的可视化测试验证或者只是为您的 javascript 代码编写单元测试?

标签: electron gitlab-ci spectron


【解决方案1】:

你可以用硒做什么?

例如,如果您的电子应用程序是一个民意调查,使用 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,这对于像我们这样的程序员来说非常酷!

我很迷茫。有什么替代方法可以工作吗?也许是另一个 docker 镜像?

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

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

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


我必须做什么才能让它工作?

www.browserstack.com

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

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

实现你自己的 selenium 服务器

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

无头浏览器

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

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

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

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

这里有一些选项:

【讨论】:

  • 感谢您的回答。我现在没有时间,因为已经很晚了,但明天我会试试看:D
猜你喜欢
  • 2022-12-07
  • 2014-07-07
  • 2019-09-05
  • 2021-09-28
  • 2015-10-24
  • 1970-01-01
  • 1970-01-01
  • 2020-04-26
  • 2020-08-28
相关资源
最近更新 更多