0

専用サーバーでテストをより高速に実行しようとしています。私は、通常、テストの実行が遅いことに気づきましたが、Firefoxの優先度を上げると(デフォルトでは通常よりも低くなります)、テストの実行速度ははるかに速くなります。

プロセスの優先度を選択できる設定を探していましたがFirefoxDriver、見つかりません。

セレンでWebドライバーの優先順位を設定する方法を教えてもらえますか?

4

1 に答える 1

2

あなたがこれを行っている理由には同意しません。優先度を変更するだけでは問題を解決できないと思います。

これを行うための API は公開されていないため、Selenium 開発者にリクエストを送ることができます ( http://code.google.com/selenium )。

このため、Selenium がブラウザー セッションを作成した後で優先プロセスを変更する必要があります。

プロセスを見つける必要があります。

var fireFoxProcesses = Process.GetProcessesByName("firefox");

これはオブジェクトの配列を返しProcessますが、テストを次々と実行している場合は、firefox.exe開いているプロセスは 1 つだけです。これは私の仮定です。したがって、実際のプロセス オブジェクトを取得します。

// should only be one, unless you are opening a few tests in concurrently.
var actualFirefoxProcess = fireFoxProcesses.First();

最後に、優先クラスを変更します。

actualFirefoxProcess.PriorityClass = ProcessPriorityClass.High;

ただし、これは少し信頼性が低くなる可能性があると思います。

編集

「ユーザーが作成した」Firefox と Selenium によって実行される Firefox の違いについては、firefox プロセスの親プロセスを見ることができます。つまり、どのプロセスが Firefox プロセスを起動したのでしょうか?

コードをコピーする意味はありませんが、この解決策は私にとってはうまくいきました:アプリケーションの親プロセスの PID を取得するにはどうすればよいですか... ユーザーは Firefox を複数の方法で起動できるため、ショートカットを使用している場合は注意が必要です/start メニュー リスト項目、親プロセスはexplorerになります。

テストの実行に使用しているソリューションについては言及していません。Visual Studio の Test Runner、NUnit 独自の GUI、TeamCity、CruiseControl、Jenkins、TFS、またはその他の CI ソリューションのいずれを使用する場合でも、「ユーザーが作成した」Firefox であるかどうかを判断するには、Firefox プロセスを起動した原因を確認する必要があります。インスタンスまたは Selenium テストからの 1 つ。

于 2013-01-07T10:24:18.673 に答える