C # настройка cookie с использованием HttpWebRequest

1

Я использую платформу автоматизации тестирования под названием Ranorex. Код - С#. Я хотел бы установить cookie на сервер с помощью HttpWebRequest, прежде чем открывать браузер для начала теста.

Ниже приведен код. Все работает без проблем. Когда я просматриваю файлы cookie с помощью браузера - у меня нет (есть еще 54 файла cookie) - когда я повторяю ответ, как показано ниже - у меня есть только три (3) файла cookie.

Ваша помощь приветствуется.

Этот метод выполнит тест

void ITestModule.Run()
{

  SummaryHelper.KillAllInternetExplorerProcesses(); 

  uri = this.createURI();

  // Using HttpWebRequest to set a cookie to the session
  HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);

  request.CookieContainer = new CookieContainer();            

  Cookie myCookie = new Cookie("mockFlagForTesting", "true", "/", "safeqa.thomson.com");

  request.CookieContainer.Add(myCookie);    


  // Create the processStartInfo obejct to open the IE Browser
  // I expect the cookie to be loaded into the session
  ProcessStartInfo processStartInfo = new ProcessStartInfo(
    @"C:\Program Files\Internet Explorer\iexplore.exe");

  processStartInfo.WindowStyle = ProcessWindowStyle.Maximized;
  processStartInfo.Arguments = uri;
  SummaryBase.process = Process.Start(processStartInfo);

  // Create and set a session cookie. 
  setHTTPCookie();
}



private void setHTTPCookie()
{

  // We will attempt to set the cookie here 
  HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri);

  request.CookieContainer = new CookieContainer();  

  Cookie myCookie = new Cookie("mockFlagForTesting", "true", "/", "safeqa.thomson.com");

  // Add the cookie
  request.CookieContainer.Add(myCookie); 

  // Do we need to use POST here to write to the server ?? 
  // Set the request.Method using WebRequestMethods.Http.Get
  request.Method = WebRequestMethods.Http.Get;

  HttpWebResponse response = (HttpWebResponse)request.GetResponse();

  // Iterate the cookies
  // We only display three (3) ?? 
  foreach (Cookie cook in response.Cookies)
  {
    Report.Info("-------------------------------------------------------------");
    Report.Info("cook.Name", cook.Name);
    Report.Info("cook.Value", cook.Value);
    Report.Info("Domain: ", cook.Domain);
    Report.Info("Path: ", cook.Path);
  }            

  response.Close();   
}

Спасибо Крису

  • 0
    Вы смотрели примеры того, как создать cookie с помощью HttpCookie то не так, как вы создаете свой объект myCookie
  • 0
    Да, почему вы ожидаете иначе? Нет никакой связи между тем, как вы отправляете веб-запрос, и браузером, создающим веб-запрос (то есть вы ожидаете увидеть мои куки, если я отправлю запрос на сервер?)
Показать ещё 3 комментария
Теги:
httpwebrequest
nshttpcookie

1 ответ

1

Вам необходимо установить cookie в браузере, а не на случайный веб-запрос.

Вы можете либо нажимать файлы cookie через скрипт, запущенный на странице, либо вводить файлы cookie для запроса, если вы можете перехватывать запросы (например, используя Fiddler/Fiddler Core).

  • 0
    Почему за это проголосовали? Алексей ударил его по ногтю

Ещё вопросы

Сообщество Overcoder
Наверх
Меню