Как получить Response data из TrafficGet после нажатия кнопки?

m1st

Client
Регистрация
16.06.2019
Сообщения
22
Благодарностей
1
Баллы
3
Привет, у меня задача отснифать запрос после нажатия кнопки submit, код работает через раз или вообще не работает, не пойму с чем это связано.
C#:
instance.UseTrafficMonitoring = true;
for (int i=0; i<25; i++)
{
var traffic = instance.ActiveTab.GetTraffic();
foreach(var t in traffic) {
    if (t.Url=="https://www.google.com") {
        {
            project.Variables["ResultCode"].Value = System.Text.Encoding.UTF8.GetString(t.ResponseBody);
            return "ok1";
        }
    }
}
System.Threading.Thread.Sleep(1000);
}
return null; //элемент не найден
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 676
Баллы
113
А в чём тут проблема?
тут стоит цикл 25 секунд ждать пока не найдёт ссылку. Интересно, что в одном месте работает, а в другом нет
так в том то и дело что у тебя повтор стоит. насколько я знаю трафик монитора очищается при обращении к нему. вот у тебя и находит если данные есть в первом проходе. в остальных проходах у тебя не будет данных в трафике.
 

m1st

Client
Регистрация
16.06.2019
Сообщения
22
Благодарностей
1
Баллы
3
Выполните код
instance.UseTrafficMonitoring = true;
До клика по кнопке.
Он в начале проекта стоит.

так в том то и дело что у тебя повтор стоит. насколько я знаю трафик монитора очищается при обращении к нему. вот у тебя и находит если данные есть в первом проходе. в остальных проходах у тебя не будет данных в трафике.
Ну так если он видит ссылку то выходит из цикла

if (t.Url=="https://www.google.com") {
{
project.Variables["ResultCode"].Value = System.Text.Encoding.UTF8.GetString(t.ResponseBody);
return "ok1";
}
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 676
Баллы
113
Он в начале проекта стоит.


Ну так если он видит ссылку то выходит из цикла

if (t.Url=="https://www.google.com") {
{
project.Variables["ResultCode"].Value = System.Text.Encoding.UTF8.GetString(t.ResponseBody);
return "ok1";
}
и вот прям такая ссылка пролетает ? прям один в один ?
может как то поиск более мягким сделать ? например if (t.Url.Contains("https://www.google.com")) ?
 

m1st

Client
Регистрация
16.06.2019
Сообщения
22
Благодарностей
1
Баллы
3
и вот прям такая ссылка пролетает ? прям один в один ?
может как то поиск более мягким сделать ? например if (t.Url.Contains("https://www.google.com")) ?
Я для примера использовал, это после кнопки submit, то-есть я ввёл какие то данные, нажал кнопку, получил ответ, но ответ мне нужен из снифера, а не из html кода.
 

m1st

Client
Регистрация
16.06.2019
Сообщения
22
Благодарностей
1
Баллы
3
и вот прям такая ссылка пролетает ? прям один в один ?
может как то поиск более мягким сделать ? например if (t.Url.Contains("https://www.google.com")) ?
вот пример следующиего блока, просто в какой то момент, он может начать выдавать false positive result.

C#:
string text = project.Variables["ResultCode"].Value;
if (text.Contains("\"code\":\"008\"")){
        project.Variables["ResultCode"].Value =  "1";
        instance.UseTrafficMonitoring = false;
        return "Bad Username";
}
if (text.Contains("\"CORRELATION_ID\"")){
        project.Variables["ResultCode"].Value =  "2";
        return "Session timeout";
}
if (text.Contains("\"code\": \"008\"")){
        project.Variables["ResultCode"].Value =  "3";
        instance.UseTrafficMonitoring = false;
        return "Ban";
}
if (text.Contains("\"code\": \"000\"") || text.Contains("\"sessionToken\"")){
        project.Variables["ResultCode"].Value =  "4";
        return "Good";
}
 

Norim

Client
Регистрация
17.10.2017
Сообщения
291
Благодарностей
53
Баллы
28
А в чём тут проблема?
тут стоит цикл 25 секунд ждать пока не найдёт ссылку. Интересно, что в одном месте работает, а в другом нет
Что бы не городить цикл можно заюзать https://help.zennolab.com/en/v7/zennoposter/7.1.4/topic705.html

if (t.Url=="https://www.google.com") {
{
t.WaitResponse( 30,2);
project.Variables["ResultCode"].Value = System.Text.Encoding.UTF8.GetString(t.ResponseBody);
return "ok1";
}
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 676
Баллы
113
это все хорошо, но этот код не будет брать разношерстные ссылки, потому что там стоит жесткое сравнение. а дальше к тебя в коде идет ветвление на разные варианты.
ты покажи что у тебя конкретно в коде , а то что для примера.
if (t.Url=="https://www.google.com") {
{
project.Variables["ResultCode"].Value = System.Text.Encoding.UTF8.GetString(t.ResponseBody);
return "ok1";
}
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)