このプログラムには 2 つの部分があります。最初の部分は、プロセスを開始するためにクライアント側のソフトウェアとサーバーを接続することです。2 つ目は、Web ブラウザーを自動化するクライアントを作成することです。
あなたはJavaに関して質問をしましたが、私はc++の解決策を提供するつもりです(解決策が1か月以上ない場合でも、解決策がないよりはましです)
QWebView
クライアント: このクラスを使用して、基本的に C++ アプリケーション内でブラウザーを制御する Qt アプリケーションを作成します。これは非常に簡単で、Qt のドキュメントはこの点で大いに役立ちます。
このアプリケーションを Tcp サーバー アプリケーションに接続します (c++、java、さらには python の任意の言語で記述できます)。クライアントとこのサーバー間のこの tcp 接続は、特定のページのロードを開始するようにクライアントに「通知」するためにのみ使用されます。これは、どのクライアントがどの URL をロードするか (など...) を示すテキスト構成ファイルを監視している可能性があります。このサーバーには、クライアントにそれぞれの開始シグナルの送信を開始するための「シグナル」を送信する方法も必要です (個人的には、stdin を介してこれを行います)。
Web コンテンツ サーバー: 個人的には、この部分には django サーバーを使用します。これにより、Pythonを使用して他のTcpサーバーに開始するように通知できます( view
ブラウザーで起動すると、「開始信号」が送信されます)。この方法を使用する利点は、各クライアントからの POST を受け入れる別のビューを作成できることです。各 POST には、どのクライアントがそれを送信したか、どの URL が読み込まれたか、どのくらいの時間がかかったかを示すことができます。
各クライアントは、ページの読み込みにかかった時間を追跡できます。これloadStarted()
は、メソッドを実行した後にシグナルが発信されたときにタイマーを開始し、 によってシグナルが発信されたload(QUrl)
ときにタイマーを停止することで実行できます。次に、この情報を django サーバーに POST で戻すことができます (その定義により、情報をデータベースに簡単に保存できます)。loadFinished(bool)
QWebView
model