google-chrome - que - generate travis yml
Chromedriver en Travis-CI (3)
Estoy teniendo problemas para hacer que el chromedriver en Travis-CI trabaje para mi proyecto de conexión directa knockout-secure-binding . Estoy tratando de usar WebdriverJS para automatizar las pruebas con Chrome, al menos.
Noté que parece haber algunos problemas con chromedriver en Travis-CI, incluyendo:
- http://github.com/travis-ci/travis-ci/issues/938
- http://github.com/travis-ci/travis-ci/issues/272
- https://code.google.com/p/chromedriver/issues/detail?id=308
El problema parece ser una variante de "Chrome no accesible", y de lo que puedo recopilar, requiere un compromiso ascendente de Google para solucionarlo.
Los detalles del error están disponibles a través del registro de compilación de Travis .
Ninguna solución es aparente, aunque un comentario mencionó el uso de --no-sandbox
, pero no está claro dónde o cómo se emplearía esto en WebdriverJS.
Cualquier pensamiento sobre esto sería sinceramente apreciado.
—— Editar ——
Como cuestión de interés, estoy usando Sauce Labs en lugar de Chromedriver.
Creo que Travis admite el controlador de Chrome, si agrega estos en su travis.yml, extraiga el chromedriver correcto y descomprímalo en una ubicación conocida, para poder rastrearlo más tarde.
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
Además, cuando llame a Selenio o a cualquier biblioteca de automatización de pruebas, tendrá que agregar esto. El código aquí está en Python
pero esto también se puede hacer en Java
y 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)
Hay una forma más fácil de iniciar Chrome en Travis CI, simplemente especifique google-chrome en addons / apt / sources y google-chrome-package en addons / apt / packages.
Aquí está mi configuración de muestra para una mejor comprensión:
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
Si desea utilizar un entorno container-based (tiempo de inicio rápido pero no sudo
), también puede hacerlo de la siguiente manera (incluya el language
etc.):
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 &
Luego, como ya mencionaste, agrega --no-sandbox
a tus opciones de Chrome (tomadas de esta gist ):
var webdriver = require(''selenium-webdriver'');
var chromeOptions = {
''args'': [''--no-sandbox'']
};
var chromeCapabilities = webdriver.Capabilities.chrome();
chromeCapabilities.set(''chromeOptions'', chromeOptions);
var driver = new webdriver.Builder().withCapabilities(chromeCapabilities).build();
Esto se debe a un issue en Travis CI. Sin embargo, si necesita sudo
todos modos o tiene una compilación de larga duración donde un entorno basado en contenedor solo tiene sentido limitado, también puede establecer sudo: true
y omitir la adición de --no-sandbox
.
Recursos adicionales:
- Complemento de Google Chrome en Travis CI
- GUI y pruebas de navegador sin cabeza en Travis CI
- Cómo hacer que travis ejecute pruebas angulares en Chrome ("Configure la variable de env CHROME_BIN")