Google chrome Travis CI上的镀铬器

Google chrome Travis CI上的镀铬器,google-chrome,selenium-chromedriver,travis-ci,Google Chrome,Selenium Chromedriver,Travis Ci,我很难让Travis CI上的chromedriver为我的项目工作。至少,我正在尝试使用WebdriverJS自动化Chrome的测试 chromedriver在Travis CI上似乎存在一些问题,包括: 这个问题似乎是“chrome无法访问”的一个变体,据我所知,这需要谷歌的上游参与来解决 错误的详细信息如下所示 没有明显的解决办法,尽管有一条评论提到使用了--No sandbox,但不清楚在WebdriverJS中在何处或如何使用它 如果您对此有任何想法,我们将不胜感激 --编

我很难让Travis CI上的chromedriver为我的项目工作。至少,我正在尝试使用WebdriverJS自动化Chrome的测试

chromedriver在Travis CI上似乎存在一些问题,包括:

这个问题似乎是“chrome无法访问”的一个变体,据我所知,这需要谷歌的上游参与来解决

错误的详细信息如下所示

没有明显的解决办法,尽管有一条评论提到使用了
--No sandbox
,但不清楚在WebdriverJS中在何处或如何使用它

如果您对此有任何想法,我们将不胜感激

--编辑--
有趣的是,我正在使用Chromedriver来代替Chromedriver。

我认为Travis确实支持chrome驱动程序,如果您将它们添加到Travis.yml中,请提取正确的Chromedriver并将其解压缩到已知位置,以便以后可以跟踪它

before_script:
  - wget http://chromedriver.storage.googleapis.com/2.10/chromedriver_linux64.zip
  - unzip chromedriver_linux64.zip -d /home/travis/virtualenv/python2.7.9/
  - export CHROME_BIN=chromium-browser
  - "export DISPLAY=:99.0"
  - "sh -e /etc/init.d/xvfb start"
  - sleep 3 
另外,当您调用selenium或任何测试自动化库时,您需要添加此代码这里的代码在
Python
中,但也可以在
Java
Ruby
中完成

options = webdriver.ChromeOptions()
options.binary_location = '/usr/bin/chromium-browser'
#All the arguments added for chromium to work on selenium
options.add_argument("--no-sandbox") #This make Chromium reachable
options.add_argument("--no-default-browser-check") #Overrides default choices
options.add_argument("--no-first-run")
options.add_argument("--disable-default-apps") 
driver = webdriver.Chrome('/home/travis/virtualenv/python2.7.9   /chromedriver',chrome_options=options)

有一种更简单的方法可以在Travis CI上启动Chrome,只需在addons/apt/sources中指定google Chrome,并在addons/apt/packages中指定google Chrome软件包

以下是我的示例配置,以便更好地理解:

sudo: required
dist: trusty
addons:
  apt:
    sources:
      - google-chrome
    packages:
      - google-chrome-stable

language: node_js
node_js:
  - "6"
cache:
  directories: node_modules
branches:
  only: master

before_script:
  - export DISPLAY=:99.0
  - sh -e /etc/init.d/xvfb start
  - npm i -g npm@^3
  - sleep 3

编辑:截至2018年10月,Travis CI正在慢慢远离集装箱(请参阅)。因此,可以省略
sudo:false
,但给定的ChromeDriver设置仍然有效

如果您想要使用环境(快速启动时间,但没有
sudo
),您也可以按如下方式进行操作(相应地包括
语言
等等):

之后,正如您已经提到的,将
--无沙盒
添加到您的Chrome选项中(取自此选项):

var-webdriver=require('selenium-webdriver');
变量色度选项={
'args':['--没有沙盒']
};
var chromeCapabilities=webdriver.Capabilities.chrome();
色度能力集('chromeOptions',chromeOptions);
var driver=new webdriver.Builder().withCapabilities(chromeCapabilities.build();
这是由于Travis CI中的错误。但是,如果您仍然需要
sudo
,或者有一个基于容器的环境意义有限的长时间运行的构建,那么您还可以设置
sudo:true
,并省略添加
--无沙箱

额外资源:


尝试将
sudo:true
添加到
.travis.yml
文件中。这将启动另一种可能工作得更好的VM。(不过,启动时间会慢一些。)
dist: trusty
sudo: false

addons:
  chrome: stable
  apt:
    packages:
      - chromium-chromedriver

before_script:
  # include ChromeDriver in PATH
  - ln --symbolic /usr/lib/chromium-browser/chromedriver "${HOME}/bin/chromedriver"
  # start Chrome and listen on localhost
  - google-chrome-stable --headless --disable-gpu --remote-debugging-port=9222 http://localhost &