我有以下情况:
我有一个 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:似乎有点矫枉过正,我还不知道这是否适合我
因此我在问,有人对我应该如何设计这个有建议吗?
谢谢您的帮助。