Maison > Article > interface Web > Un exemple d'introduction à la bibliothèque d'outils de développement Headless Chrome
Headless Chrome fait référence à l'exécution de Google Chrome en mode sans tête. L’essentiel est de faire fonctionner Google sans Google ! Il traduit toutes les fonctionnalités des plates-formes Web modernes fournies par les moteurs de rendu Chromium et Blink en ligne de commande.
A quoi sert-il ?
Headless Browser est un excellent outil pour les tests automatisés et les serveurs qui ne nécessitent pas d'interface utilisateur visuelle. Par exemple, vous souhaitez exécuter des tests sur une page Web, créer un PDF à partir de la page Web ou simplement vérifier comment le navigateur soumet l'URL.
Attention : Chrome 59 sur Mac et Linux peut fonctionner en mode Headless. Le support Windows sera bientôt fourni.
Adresse de téléchargement
Comparaison de plusieurs versions
Chromium n'est pas Chrome, mais le contenu de Chrome est essentiellement dérivé de Chromium. Il s'agit d'une version open source, mise à jour toutes les heures
standalone=1
~/.bashrc
alias chrome="/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome" alias chrome-canary="/Applications/Google\ Chrome\ Canary.app/Contents/MacOS/Google\ Chrome\ Canary"et rouvrez le terminal, nous pouvons ouvrir la version stable de Chrome directement via
, chrome
Ouvrez la version expérimentale de Chrome. chrome-canary
chrome
chrome --headless
output.pdf
chrome --headless --print-to-pdf
screenshot.png
chrome --headless --screenshot --window-size=414,736
chrome --headless --repl
chrome --headless --remote-debugging-port=9222
chrome --headless --remote-debugging-port=9222
chrome-remote-interface
npm install chrome-remote-interface -g
$ chrome-remote-interface
Usage: chrome-remote-interface [options] [command] Commands: inspect [options] [b4bef09dd2761803871f1d83e55d08b2] inspect a target (defaults to the first available target) list list all the available targets/tabs new [9bb6a7d109b3f2bf35f7e2e9bd87f98a] create a new target/tab activate 53384f78b45ee9f1e3082cf378b9c5b4 activate a target/tab by id close 53384f78b45ee9f1e3082cf378b9c5b4 close a target/tab by id version show the browser version protocol [options] show the currently available protocol descriptor Options: -h, --help output usage information -t, --host f7e6dec31ab1a0471d06c55afaca8d77 HTTP frontend host -p, --port 298c9bd6ad6e8c821dc63aa0473d6209 HTTP frontend port -s, --secure HTTPS/WSS frontend"
chrome-remote-interface new
chrome-remote-interface inspect
>>> Runtime.evaluate({expression:'location.href'})
Google出品的Lighthouse 这个网页质量检查工具,有一个组件专门做这事,考虑了各种平台的兼容性问题,源码参考lighthouse-chromelauncher,这个组件现在已经单独独立出来,作为一个单独的NPM
组件chrome-launcher
,可以直接使用这个在Node
平台下调用,其他平台的也可以此为参考。
const chromeLauncher = require('chrome-launcher');//启用无界面模式并开启远程调试,不同引用版本和方式,调用方式可能有些区别//chromeLauncher.run({chromeLauncher.launch({// port: 9222,chromeFlags: ['--headless']}).then((chrome) => {// 拿到一个调试客户端实例console.log(chrome)chrome.kill();});
实现了ChromeDevTools
协议的工具库有很多,chrome-remote-interface
是NodeJS的实现。
Chrome调试Server开启的是WebSocket交互的相关实现,要用编程的方式实现还需要封装一些WebSocket命令发送、结果接收等这一系列操作,这些chrome-remote-interface
已经帮我们做了,更多实例可以参考chrome-remote-interface的wiki。
const chromeLauncher = require('chrome-launcher');const chromeRemoteInterface = require('chrome-remote-interface')//启用无界面模式并开启远程调试,不同引用版本和方式,调用方式可能有些区别//chromeLauncher.run({chromeLauncher.launch({port: 9222,chromeFlags: ['--headless']}).then((launcher) => {chromeRemoteInterface.Version({host:'localhost',port:9222}).then(versionInfo => {console.log(versionInfo)});chromeRemoteInterface({host:'localhost',port:9222}).then((chrome) => {//这里调用ChromeDevToolsProtocol定义的接口const {Network,Page} = chrome;Network.requestWillBeSent((params) => {let {request} = params;let {url} = request;console.log(url)});Promise.all([Network.enable(),Page.enable() ]).then(() => {Page.navigate({url:'https://www.baidu.com'})});setTimeout(() => {launcher.kill()},5000);})});
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!