web-dev-qa-db-ja.com

Chrome CLIの引数--virtual-time-budgetは実際にはどういう意味ですか?

引数のドキュメントを知っています--virtual-time-budgetソース内 Chromiumの、しかし私はそれを理解していないようです:

// If set the system waits the specified number of virtual milliseconds before
// deeming the page to be ready.  For determinism virtual time does not advance
// while there are pending network fetches (i.e no timers will fire). Once all
// network fetches have completed, timers fire and if the system runs out of
// virtual time is fastforwarded so the next timer fires immediately, until the
// specified virtual time budget is exhausted.
const char kVirtualTimeBudget[] = "virtual-time-budget";

私はいくつかの実験をしました、そして結果は私を混乱させました:

# I'm on macOS; you may change this alias according to your own OS
$ alias chrome="/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome"
$ chrome --version
Google Chrome 70.0.3538.110

$ time chrome --headless --disable-gpu --print-to-pdf https://www.chromestatus.com/
real    0m0.912s
user    0m0.264s
sys     0m0.219s

$ time chrome --headless --disable-gpu --print-to-pdf --virtual-time-budget=10000 https://www.chromestatus.com/
real    0m2.502s
user    0m0.347s
sys     0m0.244s

$ time chrome --headless --disable-gpu --print-to-pdf --virtual-time-budget=100000 https://www.chromestatus.com/
real    0m15.432s
user    0m0.759s
sys     0m0.406s

$ time chrome --headless --disable-gpu --print-to-pdf --virtual-time-budget=1000000 https://www.chromestatus.com/
real    0m15.755s
user    0m0.755s
sys     0m0.401s

Chromeは上記の4つの例ではPDFに印刷する前に0、10、100、1000秒待機するだろうと思っていましたが、実際の待機時間は遠く​​離れているようです。私の質問は、 ChromeページをPDFに印刷する前に確実にX秒間待機しますか?現在、Chrome CLIのみを検討しており、 Puppeteerのようなツールを探しています。

11
Yihui Xie

タイトルの質問に簡単に答えることができます(結果を説明します)。 --virtual-time-budgetは、プロセスがどれだけ長く続くかを示しますwillページがロードされるのを待ちます。リクエストの結果が利用可能な場合(保留中のネットワークリクエストがなくなる)、すぐに結果が返されます。

AJAX要求またはその他のJavascriptが混在していない限り、返される情報は正しいはずです。そうである場合は、問題を解決するためにJavaScript/DOM操作を使用する必要があります。

5
Strom