Сниппет по ожиданию ответа

vaulroon

Client
Регистрация
20.10.2017
Сообщения
274
Благодарностей
11
Баллы
18
Код:
string validetext = @"https://help.steampowered.com/public/shared/images/responsive/share_steam_logo.png";
string errortext = @"Прокси-сервер отказывается принимать соединения|Ошибка при установлении защищённого соединения|Попытка соединения не удалась";
string badtext = @"Тут какое-нибудь плохо определение";
int count = 10;

for (int i = 0; i < count; i++) {
    Match m = Regex.Match(instance.ActiveTab.DomText, validetext);
    if (m.Success) {
        project.Variables["Check"].Value = m.Value;
        return "ok";
    }
    Thread.Sleep(1 * 1000);
}
throw new Exception();
Вот такой вот дали код мне для ожидания ответа. Я бы мог в меру своих "познаний" в С# скопировать блок for и заменить искомый текст на errortext\badtext, но в конечном итоге такой код тратил бы слишком много лишнего времени.
Можно как-то его модифицировать, чтобы в цикле for искало все определения (валидной страницы, плохого результата и ошибку прокси), но при этом, если находилось одно из определений validetext, то возвращало ОК, если определение errortext\badtext, то бросало бы exception и присваивало переменной проекта Response значение proxyerror или bad (в зависимости от того, чье определение было найдено)?
Помогите, пожалуйста.
 

vaulroon

Client
Регистрация
20.10.2017
Сообщения
274
Благодарностей
11
Баллы
18
Код:
string validetext = @"https://help.steampowered.com/public/shared/images/responsive/share_steam_logo.png";
string errortext = @"Прокси-сервер отказывается принимать соединения|Ошибка при установлении защищённого соединения|Попытка соединения не удалась";
string badtext = @"Тут какое-нибудь плохо определение";
int count = 10;

for (int i = 0; i < count; i++) {
    Match m = Regex.Match(instance.ActiveTab.DomText, validetext + "|" + errortext + "|" + badtext);
    if (m.Success) {
        project.Variables["Check"].Value = m.Value;
        return "ok";
    }
    Thread.Sleep(1 * 1000);
}
throw new Exception();
Разобрался, как сделать поиск сразу по всем заданным определениям.
Подскажите, как в выделенный блок добавить определение "если m.Value равно (1|2|3|4)".
 

woober

Client
Регистрация
07.04.2015
Сообщения
211
Благодарностей
123
Баллы
43
Код:
string validetext = @"https://help.steampowered.com/public/shared/images/responsive/share_steam_logo.png";
string errortext = @"Прокси-сервер отказывается принимать соединения|Ошибка при установлении защищённого соединения|Попытка соединения не удалась";
string badtext = @"Тут какое-нибудь плохо определение";
int count = 10;

for (int i = 0; i < count; i++) {
    Match m = Regex.Match(instance.ActiveTab.DomText, validetext + "|" + errortext + "|" + badtext);
    if (m.Success) {
        project.Variables["Check"].Value = m.Value;
        return "ok";
    }
    Thread.Sleep(1 * 1000);
}
throw new Exception();
Разобрался, как сделать поиск сразу по всем заданным определениям.
Подскажите, как в выделенный блок добавить определение "если m.Value равно (1|2|3|4)".
Не совсем понял о чем речь, но предполагаю, что так
Код:
string validetext = @"https://help.steampowered.com/public/shared/images/responsive/share_steam_logo.png";
string errortext = @"Прокси-сервер отказывается принимать соединения|Ошибка при установлении защищённого соединения|Попытка соединения не удалась";
string badtext = @"Тут какое-нибудь плохо определение";
int count = 10;

for (int i = 0; i < count; i++) {
    Match m = Regex.Match(instance.ActiveTab.DomText, validetext + "|" + errortext + "|" + badtext);
    if (m.Success) {
        project.Variables["Check"].Value = m.Value;
        return "ok";
    }
    else if (Regex.Match(m.Value,"^(1|2|3|4)$").Success)
    {
         // ЧТО-ТО ТУТ ОН ДОЛЖЕН ДЕЛАТЬ
   }
    Thread.Sleep(1 * 1000);
}
throw new Exception();
В общем проверка m.Value равно ли (1|2|3|4) (т.е. одному из значений) можно сделать с помощью Regex.Match(m.Value,"^(1|2|3|4)$").Success
 
  • Спасибо
Реакции: vaulroon

vaulroon

Client
Регистрация
20.10.2017
Сообщения
274
Благодарностей
11
Баллы
18
Не совсем понял о чем речь, но предполагаю, что так
Код:
string validetext = @"https://help.steampowered.com/public/shared/images/responsive/share_steam_logo.png";
string errortext = @"Прокси-сервер отказывается принимать соединения|Ошибка при установлении защищённого соединения|Попытка соединения не удалась";
string badtext = @"Тут какое-нибудь плохо определение";
int count = 10;

for (int i = 0; i < count; i++) {
    Match m = Regex.Match(instance.ActiveTab.DomText, validetext + "|" + errortext + "|" + badtext);
    if (m.Success) {
        project.Variables["Check"].Value = m.Value;
        return "ok";
    }
    else if (Regex.Match(m.Value,"^(1|2|3|4)$").Success)
    {
         // ЧТО-ТО ТУТ ОН ДОЛЖЕН ДЕЛАТЬ
   }
    Thread.Sleep(1 * 1000);
}
throw new Exception();
В общем проверка m.Value равно ли (1|2|3|4) (т.е. одному из значений) можно сделать с помощью Regex.Match(m.Value,"^(1|2|3|4)$").Success
Спасибо. Пойду посплю, а то решения, которое уже есть в сниппете, даже не увидел. Всего-то regex.match надо было загуглить и скорее всего сам до такого же решения дошел бы. )
 

vaulroon

Client
Регистрация
20.10.2017
Сообщения
274
Благодарностей
11
Баллы
18
Код:
string validetext = @"https://help.steampowered.com/public/shared/images/responsive/share_steam_logo.png";
string errortext = @"Прокси-сервер отказывается принимать соединения|Ошибка при установлении защищённого соединения|Попытка соединения не удалась";
string badtext = @"Тут какое-нибудь плохоe определение";
project.Variables["Response"].Value = "";
int count = 10;

for (int i = 0; i < count; i++) {
    Match m = Regex.Match(instance.ActiveTab.DomText, validetext + "|" + errortext + "|" + badtext);
    if (m.Success) {
        if (Regex.Match(m.Value, validetext).Success){
            project.Variables["Response"].Value = "Valide";
            return "ok";}
        if (Regex.Match(m.Value, errortext).Success){
            project.Variables["Response"].Value = "Error";
            throw new Exception();}
        if (Regex.Match(m.Value, badtext).Success){
            project.Variables["Response"].Value = "Bad";
            throw new Exception();}
    }
    Thread.Sleep(1 * 1000);
}
project.Variables["Response"].Value = "UnexpectedResponse";
throw new Exception();
А как переиначить, чтобы вместо project.Variables["Response"].Value = "Valide"; в переменную Response задавалось найденное регуляркой значение?
 

woober

Client
Регистрация
07.04.2015
Сообщения
211
Благодарностей
123
Баллы
43
Код:
string validetext = @"https://help.steampowered.com/public/shared/images/responsive/share_steam_logo.png";
string errortext = @"Прокси-сервер отказывается принимать соединения|Ошибка при установлении защищённого соединения|Попытка соединения не удалась";
string badtext = @"Тут какое-нибудь плохоe определение";
project.Variables["Response"].Value = "";
int count = 10;

for (int i = 0; i < count; i++) {
    Match m = Regex.Match(instance.ActiveTab.DomText, validetext + "|" + errortext + "|" + badtext);
    if (m.Success) {
        if (Regex.Match(m.Value, validetext).Success){
            project.Variables["Response"].Value = "Valide";
            return "ok";}
        if (Regex.Match(m.Value, errortext).Success){
            project.Variables["Response"].Value = "Error";
            throw new Exception();}
        if (Regex.Match(m.Value, badtext).Success){
            project.Variables["Response"].Value = "Bad";
            throw new Exception();}
    }
    Thread.Sleep(1 * 1000);
}
project.Variables["Response"].Value = "UnexpectedResponse";
throw new Exception();
А как переиначить, чтобы вместо project.Variables["Response"].Value = "Valide"; в переменную Response задавалось найденное регуляркой значение?
на примере блока badtext
project.Variables["Response"].Value = Regex.Match(m.Value, badtext).ToString();
 
  • Спасибо
Реакции: vaulroon

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