3

私はここで多くのメッセージを見回しましたが、マルチスレッド化とスレッドごとのプロキシの構成、および 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();
}

これをいくつかのスレッドに使用する価値があるようにする他の方法はありますか?

4

3 に答える 3

1

私は同様の解決策を探しています.JSでは不可能に近いヘッドレスHttpWebRequestを使用した運転自動化を見つけています。つまり、インターネットの 99% です。

とにかく-リモートで物事を行いたい場合を除き、Seleniumはサーバーを必要としません。同じマシン上でブラウザーを駆動する C# を作成する場合は、Selenium を使用するとよいでしょう。

ここで説明します: http://seleniumhq.org/docs/03_webdriver.html

編集:コメントできないため、この回答を編集する必要がありました(回答時にログインしていませんでした)。

ヘッドレス ブラウジングを行いたい場合、または少なくともブラウザが表示されない場合は、サービスとして設定できます。これはシステムとして実行され、ブラウザーは表示されません。確かにメモリを大量に消費しますが、一度に 100 のブラウザーを実行するつもりでない限り、最新のコンピューターではまったく問題ありません。また、必要に応じて、またはサービスが終了したときに、必ずブラウザを Quit() してください。

プロキシに関しては、IE で設定することはできませんが、Firefox は Capabilities でそれを取り込みます。これが私が行っていることです。

于 2012-09-25T11:27:00.023 に答える
0

これまでのところ、私が見つけた最良の解決策はawesomium.

当分の間、私は自分の回答にマークを付けたままにしますが、誰かが私の要件を満たすより良いオプションを投稿した場合は、それを変更します.

于 2012-09-30T06:44:37.013 に答える
0

通常の Selenium/Firefox の組み合わせを拒否する理由はありますか?

于 2012-09-23T18:08:56.837 に答える