如何在Chrome Headless中评估脚本?

时间:2018-07-09 09:09:06

标签: google-chrome

节点具有-e-p标志,分别用于评估和评估并打印。我知道有一个--repl标志用于无头的Chrome,但我想知道是否还有一种方法可以评估和打印表达式,例如:

$ chrome --headless --eval-and-print 'navigator.hardwareConcurrency'

2 个答案:

答案 0 :(得分:3)

显然,它接受从stdin读取,所以这个可怕的技巧“起作用”:

$ echo -e 'navigator.hardwareConcurrency\nquit\n' | chrome --headless --repl
[0412/235456.154837:ERROR:gpu_process_transport_factory.cc(980)] Lost UI shared context.
[0412/235456.214132:INFO:headless_shell.cc(370)] Type a Javascript expression to evaluate or "quit" to exit.
>>> {"result":{"description":"8","type":"number","value":8}}
>>> 

因此,有了更多可怕的骇客和jq

$ echo -e 'navigator.hardwareConcurrency\nquit\n' | chrome --headless --repl 2>&1 | grep '^>>> {"result":' | cut -c4- | jq -r .result.description
8

答案 1 :(得分:1)

无头模式当前仅支持:

  • 打印/屏幕截图
  • 倾销dom
  • 与repl互动
  • 通过远程调试器进行交互

如果您不想使用交互模式或它们周围的包装器之一,并且实际上不需要导航到页面,则可以使用data:网址提供javascript并获取dump-dom的输出,例如:

chromium --headless --dump-dom 'data:text/html,<script>document.head.innerHTML="<code>\n"+navigator.hardwareConcurrency+"\n</code>"</script>' | grep -v 'code>'