节点具有-e
和-p
标志,分别用于评估和评估并打印。我知道有一个--repl
标志用于无头的Chrome,但我想知道是否还有一种方法可以评估和打印表达式,例如:
$ chrome --headless --eval-and-print 'navigator.hardwareConcurrency'
答案 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)
无头模式当前仅支持:
如果您不想使用交互模式或它们周围的包装器之一,并且实际上不需要导航到页面,则可以使用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>'