yml travis que generate create google-chrome selenium-chromedriver travis-ci

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:

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: