web-dev-qa-db-fra.com

Automatisation sans tête avec Nodejs Selenium Webdriver

Je travaille avec un outil d'automatisation qui doit être déployé sur un serveur Ubuntu. Mon émerveillement est de savoir s'il est possible d'utiliser Chrome de manière silencieuse avec Selenium Webdriver.

J'ai essayé le code suivant jusqu'à présent, mais il continue à ouvrir le navigateur (je fais les tests sous Windows 10):

    var webdriver = require('Selenium-webdriver'),
        chrome    = require('Selenium-webdriver/chrome')
        By        = webdriver.By,
        until     = webdriver.until,
        options   = new chrome.Options();
        options.addArguments('--headless');
    var path = require('chromedriver').path;
    var service = new chrome.ServiceBuilder(path).build();
        chrome.setDefaultService(service);
    var driver = new webdriver.Builder().forBrowser('chrome').withCapabilities(options.toCapabilities()).build();

driver.get('https://www.google.com');

Notez que addArguments ('- headless') est le paramètre qui devrait rendre la navigation silencieuse, mais apparemment cela ne fonctionne pas ou il me manque quelque chose que je ne suis pas au courant.

Si quelque chose me manque, dites-le-moi car je ne sais pas si ce que je veux faire est possible, car c'est la première fois que je travaille avec ce type de technologie.

Merci.

7
avilac

Réponse mise à jour vers le mois de février 2018. 

Référencement des Exemples de NodeJS Selenium Webdriver (commit 5bf50c4)

const chrome = require('Selenium-webdriver/chrome');
const firefox = require('Selenium-webdriver/firefox');
const {Builder, By, Key, until} = require('Selenium-webdriver');

const screen = {
  width: 640,
  height: 480
};

let driver = new Builder()
    .forBrowser('chrome')
    .setChromeOptions(new chrome.Options().headless().windowSize(screen))
    .setFirefoxOptions(new firefox.Options().headless().windowSize(screen))
    .build();

Headless Chrome disponible depuis version majeure 59.0 AVR-2017

Firefox sans tête disponible depuis version majeure 56.0 SEP-2017

16
Josh Peak

Essaye celui-là:

var webdriver = require('Selenium-webdriver'),
    chrome    = require('Selenium-webdriver/chrome')
    By        = webdriver.By,
    until     = webdriver.until,
    options   = new chrome.Options();
    options.addArguments('headless'); // note: without dashes
    options.addArguments('disable-gpu')
var path = require('chromedriver').path;
var service = new chrome.ServiceBuilder(path).build();
    chrome.setDefaultService(service);
var driver = new webdriver.Builder()
    .forBrowser('chrome')
    .withCapabilities(webdriver.Capabilities.chrome()) 
    .setChromeOptions(options)                         // note this
    .build();

driver.get('https://www.google.com');
4
Matti Lehtinen

Malheureusement, la méthode headless () n'existe plus dans Webdriver JS.

Utilisation

const seleniumWebdriver = require('Selenium-webdriver');
const chrome = require('Selenium-webdriver/chrome');

var driver = new Builder().forBrowser('chrome')
            .setChromeOptions(new chrome.Options().addArguments('--headless'))
            .build();

au lieu.

1
cyluxx

Pour démarrer Chrome en mode sans tête, appelez simplement Options.headless(). Le démarrage en mode sans tête désactive également actuellement l’accélération GPU. C'est le code:

  var seleniumWebdriver = require('Selenium-webdriver');
  var chrome    = require('Selenium-webdriver/chrome');

  var options   = new chrome.Options().headless();

  var driver = new seleniumWebdriver.Builder()
    .forBrowser('chrome')
    .setChromeOptions(options)
    .build();

Remarque: Pour des raisons de sécurité, Chrome désactive les téléchargements par défaut en mode sans tête. Vous pouvez appeler setDownloadPath pour réactiver les téléchargements.

0
Jai Prak