次のシナリオがあります。
同時に異なる 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の使用:やり過ぎのようで、それが自分にとって正しいことかどうかまだわかりません
したがって、私は尋ねています、これをどのように設計すべきか誰かアドバイスがありますか?
ご協力ありがとうございました。