如何在phantomjsdriver selenium c#中启用cookie?

时间:2015-08-12 16:35:12

标签: c# selenium automation phantomjs headless

以下是我的代码:

case BrowserType.PhantomJS:
               var service = PhantomJSDriverService.CreateDefaultService(Path.Combine(_rootPath, @"Packages\"));
               var cookieFilePath=Path.Combine(_rootPath, @"Packages\cookie.txt");
                 if (!File.Exists(cookieFilePath))
                       File.Create(cookieFilePath);

                 var phantomjsoptions = new PhantomJSOptions();
                 driver = new PhantomJSDriver(service,phantomjsoptions);
                 var cookieJar = driver.Manage().Cookies;
                 driver.Navigate().GoToUrl(SeleniumConfiguration.Current.BaseURL);
                 cookieJar.AddCookie(new Cookie("x", "12345"));
                 return driver;

基本上问题是我无法登录我的测试应用程序,因为我收到错误说 -

  

"您的浏览器设置为阻止Cookie"

我已经尝试了一切,但我似乎无法为此找到解决方案 我该怎么办? 请帮帮我 如果遗漏了一些细节,请告诉我。

3 个答案:

答案 0 :(得分:1)

RFC 2109明确禁止从具有IP地址的URL接受cookie

几乎可以肯定,您将通过基于IP的地址访问测试服务器。

您可以尝试设置某种DNS /主机文件,以允许您使用假域名。

答案 1 :(得分:0)

您必须在加载页面时等待,然后设置cookie:

driver.Navigate().GoToUrl(SeleniumConfiguration.Current.BaseURL);
//Wait page loaded
cookieJar.AddCookie(new Cookie("x", "12345"));

尝试此解决方案:https://stackoverflow.com/a/30636987

driver.Navigate().GoToUrl(SeleniumConfiguration.Current.BaseURL);//some fake url
driver.Manage().Window.Maximize();
driver.SwitchTo().ActiveElement();
cookieJar.AddCookie(new Cookie("x", "12345"));
driver.Navigate().GoToUrl(SeleniumConfiguration.Current.BaseURL);//cookie exsist

答案 2 :(得分:-2)

您可以尝试以下步骤

1)在firefox或chrome浏览器中创建用户个人资料。 2)确认"接受cookie"通过转到浏览器设置选项启用该选项。 3)通过硒加载您的配置文件。

这样做可确保启用cookie选项为ON,并且您的会话也将保存在浏览器缓存中。

for chrome

System.setProperty("webdriver.chrome.driver", "browser/chromedriverlinux");
ChromeOptions options = new ChromeOptions();
options.addArguments("--user-data-dir=/home/rohit/.config/google-chrome/Profile 1");
options.addArguments("--start-maximized");
WebDriver driver = new ChromeDriver(options);

适用于Firefox

ProfilesIni profile = new ProfilesIni();
FirefoxProfile ffprofile = profile.getProfile("ROHIT");
WebDriver driver = new FirefoxDriver(ffprofile);

要在firefox中创建配置文件,请在终端中尝试以下命令 firefox -p