Loadrunner, как получить значение cookie?

После авторизации на моем веб-сайте он создает особую ценность в файлах cookie:

Cookies: session=bb415f62-eb9e-42fa-aedf-ca1887548216

Значение этого файла cookie требуется для других вызовов API на моем веб-сайте. Мой автоматически сгенерированный скрипт создал это:

web_add_header("token", 
    "bb415f62-eb9e-42fa-aedf-ca1887548216");

Однако есть проблема. Значение сеанса cookie постоянно меняется после каждой авторизации. Этот web_add_header имеет постоянное значение, срок действия которого истек.

Можно ли получить значение из Cookie и установить его в заголовке в loadrunner?


person Mr.D    schedule 22.11.2019    source источник


Ответы (1)


Пожалуйста, проверьте следующий пример для протокола Web HTTP:

Вам понадобится что-то вроде этого, чтобы извлечь значение cookie:

//  Set-Cookie: session=bb415f62-eb9e-42fa-aedf-ca1887548216; path=/
    web_reg_save_param_ex(
        "ParamName=session",
        "LB=session=",
        "RB=;",
        "Ordinal=all",
        "Notfound=warning",
        SEARCH_FILTERS,
        "Scope=Cookies",  
        LAST);

затем используйте его следующим образом:

web_add_header("token", "{session}");

Вот работающий пример:


   //Extract the uuid and save it under "session" parameter
    web_reg_save_param_ex(
        "ParamName=session",
        "LB=\"uuid\": \"",
        "RB=\"",
        "Ordinal=all",
        "Notfound=warning",
        SEARCH_FILTERS,
        "Scope=Body", 
        LAST);

    web_url("get data",
            "URL=http://httpbin.org/uuid",
            "Snapshot=t1.inf",
            LAST);


    if (atoi(lr_eval_string("{session_count}"))>0) lr_save_string(lr_eval_string("{session_1}"),"token");

    web_add_header("token", "{token}");

    web_reg_save_param_ex(
        "ParamName=session",
        "LB=\"uuid\": \"",
        "RB=\"",
        "Ordinal=all",
        "Notfound=warning",
        SEARCH_FILTERS,
        "Scope=Body",
        LAST);

    web_url("get data_2",
            "URL=http://httpbin.org/uuid",
            "Snapshot=t2.inf",
            LAST);

//If there is a new session, overwrite the token parameter
    if (atoi(lr_eval_string("{session_count}"))>0) lr_save_string(lr_eval_string("{session_1}"),"token");

    web_add_header("token", "{token}");

    web_reg_save_param_ex(
        "ParamName=session",
        "LB=\"uuid\": \"",
        "RB=\"",
        "Ordinal=all",
        "Notfound=warning",
        SEARCH_FILTERS,
        "Scope=Body",
        LAST);

    web_url("get data_3",
            "URL=http://httpbin.org/uuid",
            "Snapshot=t3.inf",
            LAST);   
person Buzzy    schedule 24.11.2019
comment
Когда я использую ваш код, я получаю это предупреждающее сообщение: No match found for requested parameter session. Нужны ли нам какие-то параметры, которые определяют файлы cookie домена? - person Mr.D; 25.11.2019
comment
Это всего лишь пример. Если вы хотите, чтобы я посмотрел на конкретный URL-адрес, к которому у меня есть доступ, я могу добавить специальный код для этого URL-адреса. - person Buzzy; 25.11.2019
comment
я только что отправил электронное письмо - person Mr.D; 25.11.2019