2

次のシナリオがあります。

同時に異なる Web サイトにアクセスして、それらからデータを収集しようとする C# WPF プログラムがあります。

Web サイト A (www.example.com) にはログイン フォームがあり、ログイン後に www.example.com?redir=abc などの多数のリンクが表示されます。

私がやること:

  • FirefoxDriver 1 を起動します
  • ログインする
  • 無限ループ: すべてのリンクを収集してページを更新する

問題は、別の FirefoxDriver インスタンス 2 がプロジェクトの別のスレッドで実行されていることです。

このインスタンス 2 では、以前に収集したリンクにアクセスし、それらを開きたいと考えています。

問題は、それらにアクセスするために (リダイレクトしている)、Web サイト A に再度ログインする必要があることです。ログインすると、インスタンス 1 のセッションが終了するため、再度ログインする必要があります。インスタンスはお互いのセッションを「盗んでいます」。(これをさらにスケールしてインスタンス 3,4 を作成したいので、問題はさらに悪化します)。

明らかに私の問題は、インスタンス 1 とインスタンス 2 が同じセッションを共有していないことです。

問題を解決するために私が見つけた可能性:

  • 同じ FirefoxProfile の使用: 試しましたが、動作しませんでした。まだセッションを共有していません
  • 2 つのウィンドウ/タブで 1 つのインスタンスを使用し、Selenium ThreadGuard クラスを使用して両方のスレッドからアクセスする: ウィンドウを常に切り替える必要があるため、非常に複雑に思えます
  • Selenium Gridの使用:やり過ぎのようで、それが自分にとって正しいことかどうかまだわかりません

したがって、私は尋ねています、これをどのように設計すべきか誰かアドバイスがありますか?

ご協力ありがとうございました。

4

1 に答える 1