web-dev-qa-db-fra.com

Est-il possible de démarrer Google Chrome en mode sans tête?

J'ai soigneusement révisé la liste des commutateurs à http://peter.sh/experiments/chromium-command-line-switches/#chrome-frame et je n'ai rien trouvé qui lancerait Chrome dans un processus d'arrière-plan masqué.

Le plus proche que j'ai pu est --keep-alive-for-test + application packagée personnalisée, mais l'application ne parvient pas à exécuter le code transmis car (la façon dont elle rapporte) "pas de fenêtre - ChromeHidden".

57
Silviu-Marian

TL; DR

google-chrome --headless --remote-debugging-port=9222 http://example.com

Vous auriez également besoin de --disable-gpu temporairement.


Tutoriel :

https://developers.google.com/web/updates/2017/04/headless-chrome


Un travail est en cours: https://code.google.com/p/chromium/issues/detail?id=54695

Les principaux livrables sont:

  1. Une bibliothèque à laquelle des applications sans tête peuvent se connecter.
  2. Un exemple d'application qui montre l'utilisation des API sans tête.

Il serait donc possible de créer une application simple qui s'exécute dans la console sans se connecter à l'affichage.

Mise à jour du 18 avril 16: Le travail est principalement effectué. Il y a maintenant un forum public:

https://groups.google.com/a/chromium.org/forum/#!forum/headless-dev

La documentation est en cours:

https://chromium.googlesource.com/chromium/src/+/master/headless/README.md

Mise à jour du 20 septembre 16: Il ressemble à chrome obtiendra finalement le paramètre "--headless": - https://bugs.chromium.org/p/chromium/issues/detail?id=612904

Il y avait ne présentation sur BlinkOn 6 (16/17 juin 2016)

Mise à jour du 29 novembre 16: Doc de conception pour --headless indicateur: https://docs.google.com/document/d/1aIJUzQr3eougZQp90bp4mqGr5gY6hdUice8UPa-Ys90/edit#heading=h.qxqfzv2lj12s

Mise à jour du 13 décembre 16: --headless le drapeau devrait être bientôt disponible dans les versions Canaries

Mise à jour du 12 mars 2017: Chrome 57 a un --headless le drapeau fonctionne. En attente de sélénium et d'autres outils pour rattraper son retard. Guide de l'utilisateur: https://chromium.googlesource.com/chromium/src/+/lkgr/headless/README.md

62
Vanuan

Ce gars a réussi à exécuter Chrome sans tête en utilisant Xvfb (X frame frame buffer) pour tromper Chrome en pensant qu'il affichait une fenêtre:

http://e-method.blogspot.fr/2010/11/google-chrome-with-xvfb-headless-server.html

Si vous êtes sous Linux, vous pouvez essayer cela.

Donc, fondamentalement, vous devez installer le tampon de trame virtuelle X et Google Chrome via:

root@localhost: ~# apt-get install xvfb imagemagick
root@localhost: ~# apt-get install google-chrome

Exécutez ensuite le navigateur à l'écran:

root@localhost: ~# xvfb-run --server-args='-screen 0, 1024x768x24' \
google-chrome -start-maximized http://www.example.com \
> & /dev/null &
root@localhost: ~# DISPLAY=:99 import -window root myimage.png
23
Chris B

Ou vous pouvez regarder le projet PhantomJS qui est une implémentation WebKit sans tête.

12
Anthony O.

Il s'avère qu'il démarre en mode sans tête si vous le démarrez en tant que sous-processus enfant. Par ailleurs:

  • nircmd.exe peut faire win hide on chrome basé sur son PID
  • Autohotkey_L peut également démarrer Chrome caché sans bouton de barre des tâches
7
Silviu-Marian

Vous pouvez configurer un linux VM et utiliser xvfb dedans.

Installation sur debian/ubuntu:

Sudo aptitude install xvfb

Commencez Chrome sans tête et visitez http://example.com :

xvfb-run --server-args='-screen 0, 1024x768x16' google-chrome 
    -start-maximized http://example.com > /dev/null &
7
mit

Le projet Chromium Embedded Framework semble correspondre à votre cas d'utilisation. Je n'ai pas d'expérience personnelle avec le projet, mais j'ai entendu de bonnes choses et il a une API solide que vous devriez pouvoir exploiter à vos fins.

5
Mike West

Je n'ai pas encore assez de réputation pour commenter, mais je veux que vous sachiez que le mode sans tête chrome dont Vanuan mentionne fonctionne réellement avec le pilote Web Selenium.

Dans Java vous pouvez passer l'indicateur à chrome via chromeDriver avec le code suivant:

ChromeOptions options = new ChromeOptions();
options.addArguments("--headless");
ChromeDriver chromeDriver = new ChromeDriver(options);
3
Marlies

J'ai récemment trouvé cet article qui mentionne plusieurs options de ligne de commande qui semblent le faire. En utilisant ces mots-clés, j'ai cherché sur Google ce morceau de code qui semble confirmer que ces options existent.

// Does not automatically open a browser window on startup (used when
// launching Chrome for the purpose of hosting background apps).
const char kNoStartupWindow[]               = "no-startup-window";

// Causes Chrome to launch without opening any windows by default. Useful if
// one wishes to use Chrome as an ash server.
const char kSilentLaunch[]                  = "silent-launch";

J'ai réussi à exécuter avec succès Chrome avec --no-startup-window et en effet il s'est lancé sans aucune fenêtre. Il avait l'air d'avoir été lancé correctement, il a engendré tous les enfants typiques, mais le site Web que j'ai essayé de le charger ne semblait pas être réellement visité. Il est possible que ce mode sans tête soit uniquement utilisé pour exécuter des applications et non pour visiter des sites sans tête *), mais il semble très prometteur car l'arborescence de travail normale est configurée, juste pas de fenêtres.

La deuxième option --silent-launch made chrome processus très silencieux. Je n'ai pas remarqué d'enfants générés et le processus s'est arrêté rapidement. Je doute qu'il soit utilisable dans ce cas.

Après avoir échoué mes tentatives avec ces options, je me suis concentré sur des moyens moins sophistiqués. Au bas de la liste, il y a deux options:

// Specify the initial window position: --window-position=x,y
const char kWindowPosition[]                = "window-position";

// Specify the initial window size: --window-size=w,h
const char kWindowSize[]                    = "window-size";

J'ai exécuté Chrome avec des options pour le déplacer complètement hors de la zone de travail:

--window-size=800,600 --window-position=-800,0

et aussi sale qu'il le semble, bien sûr, ce n'est pas vraiment sans tête, mais la fenêtre est toujours hors de ma vue, et tout est fait uniquement avec les options de démarrage de chrome, sans que des outils externes envoient des messages de masquage de fenêtre de bas niveau.

*) oui, je sais essayer de faire des choses étranges. Essentiellement, j'ai essayé de me débarrasser de la fenêtre Chrome qui est conservée par Karma pendant les tests. Je sais que je peux passer à PhantomJS, mais j'avais spécifiquement besoin de les exécuter dans Chrome, et la fenêtre qui s'ouvrait était. eh .. dérangeant à long terme.

2
quetzalcoatl

Il est actuellement en cours de développement, vous pouvez lire plus d'informations à ce sujet ici: https://chromium.googlesource.com/chromium/src/+/master/headless/README.md

Headless Chromium est une bibliothèque pour exécuter Chromium dans un environnement sans tête/serveur. Les cas d'utilisation attendus incluent le chargement de pages Web, l'extraction de métadonnées (par exemple, le DOM) et la génération de bitmaps à partir du contenu des pages - en utilisant toutes les fonctionnalités de plate-forme Web modernes fournies par Chromium et Blink.

Il fonctionne actuellement sous Linux, il y a un Nice présentation .

0
Mohamed Mansour

Chrome 59 a la possibilité de créer une instance sans tête. Trouvez le tutoriel ci-dessous https://www.automation99.com/2017/07/how-to-use-chrome-headless-using.html?m=1

0
Anjan Mondal

J'ai également pu faire chrome travailler sans tête avec NightwatchJS. Voici la configuration qui m'a permis de l'utiliser:

    "chromeHeadless": {
  "desiredCapabilities": {
    "browserName": "chrome",
    "chromeOptions": {
      "args": ["--headless"],
      "binary": "/Applications/Google Chrome Canary.app/Contents/MacOS/Google Chrome Canary"
    }
  }
}
0
timetraveler90