skh*_*o87 2 c# selenium webdriver selenium-firefoxdriver
我有以下场景:
我有一个C#WPF程序,我尝试同时访问不同的网站并从中收集数据.
网站A(www.example.com)有一个登录表单,登录后会显示一些链接,例如www.example.com?redir=abc
我所做的:
问题是,我在我的项目中的另一个Thread中运行了另一个FirefoxDriver实例2.
在此实例2中,我访问之前收集的链接并想要打开它们.
问题是,为了访问它们(它们是重定向的),我需要再次登录到网站A.当我登录时,实例1上的会话结束,所以我需要再次登录等等,所以有效地实例正在"窃取"彼此的会话.(我想更多地扩展这个实例3,4 ......所以这会使问题更严重).
显然我的问题是实例1和实例2没有共享同一个会话.
我找到解决问题的可能性:
因此,我在问,有人建议我应该如何设计这个?
谢谢您的帮助.
首先,我认为有一种方法可以在两个实例之间共享一个配置文件,但WebDriver似乎并非如此.我能够让它工作的唯一方法是将cookie从一个实例复制到另一个实例:
var driver1 = new FirefoxDriver();
driver1.Navigate().GoToUrl("http://www.html-kit.com/tools/cookietester/");
driver1.FindElementByXPath("//input[@value=\"Set Test Cookie\"]").Click();
var driver2 = new FirefoxDriver();
driver2.Navigate().GoToUrl("http://www.html-kit.com/tools/cookietester/");
// Copy cookies from one driver to the other
foreach (Cookie c in driver1.Manage().Cookies.AllCookies)
{
driver2.Manage().Cookies.AddCookie(new Cookie(c.Name, c.Value, c.Domain.TrimStart('.'), c.Path, c.Expiry));
}
driver2.Navigate().Refresh();
Run Code Online (Sandbox Code Playgroud)
只有我必须解决的问题是,如果您不在同一个域中,WebDriver(或Firefox)不允许您设置cookie.因此需要一些小技巧:转到同一域上的URL并刷新或稍后导航到目标URL.所以在你的情况下:
一点情景.我希望它有效.祝好运.
| 归档时间: |
|
| 查看次数: |
2088 次 |
| 最近记录: |