PhantomJS による非同期ページ読み込みの処理
Web オートメーションの領域では、PhantomJS は Web ページのナビゲーションと操作に優れています。ただし、非同期コンテンツの読み込みに大きく依存する最新の Web アプリケーションを扱う場合、ページの読み込みがいつ本当に完了したかを判断するのは困難な場合があります。
そのような問題の 1 つは、PhantomJS の onLoadFinished イベントがすべての動的コンテンツよりも前に発生する場合に発生します。 、広告などの機能が満載です。これにより、不完全なスクリーンショットや不正確なページ インタラクションが発生する可能性があります。
早期の onLoadFinished 起動の問題への対処
この課題を克服するための別のアプローチは、時間制限を設けた遅延を採用することです。スクリーンショットの撮影など、特定のアクションを実行する前に。これにより、ページの JavaScript が非同期読み込みプロセスを完了するのに十分な時間が確保されます。
コード例
次のコード スニペットは、このアプローチの実装方法を示しています。
page.open(address, function (status) { if (status !== 'success') { console.log('Unable to load the address!'); phantom.exit(); } else { window.setTimeout(function () { page.render(output); phantom.exit(); }, 1000); // Change timeout as required to allow sufficient time } });
このスクリプトでは、window.setTimeout を使用して 1000 ミリ秒 (1 秒) のタイムアウトが導入されています。この遅延により、PhantomJS はスクリーンショットをキャプチャする前に、非同期コンテンツの読み込みが完了するまで待機する十分な時間を確保できます。タイムアウト期間は、複雑な Web アプリケーションに十分な時間を確保するために、必要に応じて調整できます。
以上がPhantomJS で非同期ページ読み込みを処理し、時期尚早の onLoadFinished イベントに対処する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。