私はここで多くのメッセージを見回しましたが、マルチスレッド化とスレッドごとのプロキシの構成、および ajax/javascript のサポートを可能にするブラウザー コントロールまたはヘッドレス ブラウザーをまだ見つけていません。
私は遠くにしようとしました:
- awesomium - 実行する必要があるスレッドごとに生成する個別のアプリケーションを作成した場合、かなりうまく機能しますが、探しているものではありません。
- simplebrowser - うまく機能しますが、js/ajax 操作が弱すぎて考慮できません
- nhtmlunit - C# で起動して実行するにはあまりにも複雑に動作し、うまく動作しません
- watin - プライベート セッションをインスタンス化できず、インスタンスごとにプロキシを持てない
私も他のものを試しましたが、これらは私がテストを覚えている主なものでした.
awesomium がマルチスレッドを実行できれば素晴らしいことですが、それは今後のリリースでのみ実行されると聞きましたが、これまでで最高のものでした。
テストのために他の人を推薦してもらえますか、または上記の質問を実行できる人はいますか?
ここでの私の主な目標は、ローカル ネットワーク Web サイトでのテストを自動化することです。
アップデート:
私が間違っている場合は修正してください。ただし、watin とは異なり、selenium webdriver (いくつか試してテストします) は、ブラウザーを制御するためにアプリケーション自体とは別にリモートサーバーを実行する必要があるようで、まだ代替手段を探しています。
更新 2:
chromiumdriver + Selenium と c# でマルチスレッドを実行できましたが、複数の cromiumdrivers + ブラウザーを生成するだけでなく、いくつかのスレッドに信じられないほどの量のメモリを使用します。
複数のスレッドを起動します。
_tasks = new List<Task>();
foreach (ProxyList item in _proxy)
{
// using it directly it doesnt get passed down to the function
string proxy = item.Proxy;
string host = item.Host;
_tasks.Add(Task.Factory.StartNew(() =>
{
ChromeGetIp(proxy, host);
}));
}
クロム
private void ChromeGetIp(string proxy, string host)
{
string dir = Application.StartupPath + "\\" + host;
ChromeOptions profile = new ChromeOptions();
profile.AddArguments(new string[] { "-proxy-server=" + proxy, "-incognito", "--new-window", "-user-data-dir=" + dir });
IWebDriver driver = new ChromeDriver(profile);
driver.Navigate().GoToUrl("http://checkip.dyndns.com/");
if (driver.PageSource.Contains("Current IP Address"))
MessageBox.Show(driver.FindElement(By.TagName("body")).Text, host);
else
MessageBox.Show("Failed", host);
driver.Quit();
}
これをいくつかのスレッドに使用する価値があるようにする他の方法はありますか?