2014-10-02 6 views
1

Я использую платформу автоматизации тестирования под названием Ranorex. Код - C#. Я хотел бы установить cookie на сервер с помощью HttpWebRequest, прежде чем открывать браузер для начала теста.C# настройка 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(); 
} 

Благодаря Chris

+0

Вы посмотрели примеры того, как создать файл cookie с помощью 'HttpCookie', что-то не так, как вы создаете свой объект' myCookie' – MethodMan

+0

Да, почему вы ожидали иначе? Нет никакой связи между тем, как вы делаете веб-запрос и браузер, делаете веб-запрос (т. Е. Ожидаете ли вы увидеть мои файлы cookie, если я сделал запрос на сервер?) –

+0

http://msdn.microsoft.com/en-us/library/system .web.httprequest.cookies (v = vs.110) .aspx – MethodMan

ответ

1

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

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

+0

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

Смежные вопросы