引数のドキュメントを知っています--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のようなツールを探しています。
タイトルの質問に簡単に答えることができます(結果を説明します)。 --virtual-time-budgetは、プロセスがどれだけ長く続くかを示しますwillページがロードされるのを待ちます。リクエストの結果が利用可能な場合(保留中のネットワークリクエストがなくなる)、すぐに結果が返されます。
AJAX要求またはその他のJavascriptが混在していない限り、返される情報は正しいはずです。そうである場合は、問題を解決するためにJavaScript/DOM操作を使用する必要があります。