У меня есть следующий сценарий:
У меня есть программа C# WPF, в которой я пытаюсь получить доступ к разным веб-сайтам одновременно и собирать с них данные.
Веб-сайт A (www.example.com) имеет форму входа и после входа отображает ряд ссылок, таких как www.example.com?redir=abc.
Что я делаю:
- запустить FirefoxDriver 1
- авторизоваться
- бесконечный цикл: собрать все ссылки и обновить страницу
Проблема в том, что у меня есть другой экземпляр FirefoxDriver 2, работающий в другом потоке в моем проекте.
В этом экземпляре 2 я получаю доступ к ссылкам, которые я собрал ранее, и хочу их открыть.
Проблема в том, что для того, чтобы получить к ним доступ (они перенаправляют), мне нужно снова войти на веб-сайт A. Когда я вхожу в систему, сеанс на экземпляре 1 завершается, поэтому мне нужно снова войти туда и т. д. и т. д., поэтому эффективно экземпляры «крадут» сеансы друг у друга. (Я хочу масштабировать это еще больше, чтобы иметь экземпляры 3,4... так что это еще больше усугубляет проблему).
Очевидно, моя проблема в том, что экземпляр 1 и экземпляр 2 не используют один и тот же сеанс.
Возможности, которые я нашел для решения проблемы:
- используя тот же FirefoxProfile: пробовал, не работает, по-прежнему не разделяет сеанс
- использование одного экземпляра с 2 окнами/вкладками и доступ к нему из обоих потоков с использованием класса Selenium ThreadGuard: кажется очень сложным, так как мне нужно будет постоянно переключаться между окнами
- использование Selenium Grid: кажется излишним, и я еще не мог понять, подходит ли это мне
Поэтому я спрашиваю, у кого-нибудь есть совет, как мне это спроектировать?
Спасибо за помощь.