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".
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:
- Une bibliothèque à laquelle des applications sans tête peuvent se connecter.
- 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
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
Ou vous pouvez regarder le projet PhantomJS qui est une implémentation WebKit sans tête.
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:
win hide
on chrome basé sur son PIDVous 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 &
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.
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);
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.
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 .
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
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"
}
}
}