Помогите с циклом в C#

kapelan28

Client
Регистрация
22.09.2015
Сообщения
469
Благодарностей
186
Баллы
43
Доброго времени суток!
Пол дня сегодня уже потратил на поиск лучшего варианта, пока ничего не работает, как нужно.
Задача - проверка кода смс на null - если есть, то пауза и делаем повторный запрос. В первый раз запрос делается, но проверка не выполняется и в поле ввода уходит null
Код:
    for (int i=0; i < 19; i++){
    Thread.Sleep(30000);
    string strConfirmationCode0 = ZennoPoster.HttpGet("http://simsms.org/priemnik.php?metod=get_sms&country=ru&service=opt65&id=" +strRegistrationID+ "&apikey=" +apikey+"", "", "UTF-8", ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly);
    string strRegexConfCode = @"(?<=sms"":).*?(?=,)";
    string strConfirmationCode = new Regex(strRegexConfCode).Match(strGetNumberAll).Value;
    project.SendInfoToLog("Получен код подтверждения: " + strConfirmationCode, true);
        if (strConfirmationCode=="null"){
            Thread.Sleep(30000);
            }
Подскажите, пожалуйста, правильное направление
 

esouldy

Client
Регистрация
28.02.2016
Сообщения
185
Благодарностей
92
Баллы
28
прерывание кажется нет
return strConfirmationCode;

Код:
for (int i=0; i < 19; i++){
    Thread.Sleep(30000);
    string strConfirmationCode0 = ZennoPoster.HttpGet("http://simsms.org/priemnik.php?metod=get_sms&country=ru&service=opt65&id=" +strRegistrationID+ "&apikey=" +apikey+"", "", "UTF-8", ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly);
    string strRegexConfCode = @"(?<=sms"":).*?(?=,)";
    string strConfirmationCode = new Regex(strRegexConfCode).Match(strGetNumberAll).Value;
    project.SendInfoToLog("Получен код подтверждения: " + strConfirmationCode, true);
    if (strConfirmationCode!="null") return strConfirmationCode;
    if (strConfirmationCode=="null"){
        Thread.Sleep(30000);
    }
}
 
  • Спасибо
Реакции: kapelan28

kapelan28

Client
Регистрация
22.09.2015
Сообщения
469
Благодарностей
186
Баллы
43
Нужна еще небольшая помощь - не происходит выход из цикла при совпадении условия (смс пришла, ввелась в поле и дальше идет повторный запрос на смс)
Код:
    //Получаем код активации
     for (int i=0; i < 2; i++){
    Thread.Sleep(40000);
    string strConfirmationCode0 = ZennoPoster.HttpGet("http://simsms.org/priemnik.php?metod=get_sms&country=ru&service=opt65&id=" +strRegistrationID+ "&apikey=" +apikey+"", "", "UTF-8", ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly);
    string strRegexConfCode = @"(?<=sms"":"").*?(?="",)";
    string strConfirmationCode = new Regex(strRegexConfCode).Match(strConfirmationCode0).Value;
    project.SendInfoToLog("Получен код подтверждения: " + strConfirmationCode, true);
    if (strConfirmationCode!="null"){  
    HtmlElement elConfirmationField = Tab1.FindElementByXPath("//input[@name='code']", 0);
    if (elConfirmationField.IsVoid) return "error: Не удалось найти elConfirmationField (поле ввода кода подтверждения из СМС)";
    Tab1.FullEmulationMouseMoveToHtmlElement(elConfirmationField);
    Thread.Sleep(regRandom.Next(500, 2500));
    Tab1.FullEmulationMouseClick("left", "click");
    instance.SendText(strConfirmationCode, regRandom.Next(80, 250));
    }if (strConfirmationCode=="null"){
        Thread.Sleep(30000);
        }
    }
В цикле идет проверка на наличии кода в смс. Пришла смс - должен перейти к заполнению, а иначе проверка. С вариантом кода выше (в предыдущем сообщении) происходит завершение работы шаблона на этом этапе, а мне это не подходит.
 

ZennoScript

Moderator
Регистрация
04.03.2011
Сообщения
4 450
Благодарностей
1 885
Баллы
113
Нужна еще небольшая помощь - не происходит выход из цикла при совпадении условия (смс пришла, ввелась в поле и дальше идет повторный запрос на смс)
Код:
    //Получаем код активации
     for (int i=0; i < 2; i++){
    Thread.Sleep(40000);
    string strConfirmationCode0 = ZennoPoster.HttpGet("http://simsms.org/priemnik.php?metod=get_sms&country=ru&service=opt65&id=" +strRegistrationID+ "&apikey=" +apikey+"", "", "UTF-8", ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly);
    string strRegexConfCode = @"(?<=sms"":"").*?(?="",)";
    string strConfirmationCode = new Regex(strRegexConfCode).Match(strConfirmationCode0).Value;
    project.SendInfoToLog("Получен код подтверждения: " + strConfirmationCode, true);
    if (strConfirmationCode!="null"){ 
    HtmlElement elConfirmationField = Tab1.FindElementByXPath("//input[@name='code']", 0);
    if (elConfirmationField.IsVoid) return "error: Не удалось найти elConfirmationField (поле ввода кода подтверждения из СМС)";
    Tab1.FullEmulationMouseMoveToHtmlElement(elConfirmationField);
    Thread.Sleep(regRandom.Next(500, 2500));
    Tab1.FullEmulationMouseClick("left", "click");
    instance.SendText(strConfirmationCode, regRandom.Next(80, 250));
    }if (strConfirmationCode=="null"){
        Thread.Sleep(30000);
        }
    }
В цикле идет проверка на наличии кода в смс. Пришла смс - должен перейти к заполнению, а иначе проверка. С вариантом кода выше (в предыдущем сообщении) происходит завершение работы шаблона на этом этапе, а мне это не подходит.
Так пробуйте:

Код:
//Получаем код активации
     for (int i=0; i < 2; i++){
    Thread.Sleep(40000);
    string strConfirmationCode0 = ZennoPoster.HttpGet("http://simsms.org/priemnik.php?metod=get_sms&country=ru&service=opt65&id=" +strRegistrationID+ "&apikey=" +apikey+"", "", "UTF-8", ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly);
    string strRegexConfCode = @"(?<=sms"":"").*?(?="",)";
    string strConfirmationCode = new Regex(strRegexConfCode).Match(strConfirmationCode0).Value;
    project.SendInfoToLog("Получен код подтверждения: " + strConfirmationCode, true);
    if (strConfirmationCode!="null"){ 
    HtmlElement elConfirmationField = Tab1.FindElementByXPath("//input[@name='code']", 0);
    if (elConfirmationField.IsVoid) return "error: Не удалось найти elConfirmationField (поле ввода кода подтверждения из СМС)";
    Tab1.FullEmulationMouseMoveToHtmlElement(elConfirmationField);
    Thread.Sleep(regRandom.Next(500, 2500));
    Tab1.FullEmulationMouseClick("left", "click");
    instance.SendText(strConfirmationCode, regRandom.Next(80, 250));
    return "OK";
    }if (strConfirmationCode=="null"){
        Thread.Sleep(30000);
        }
    }
 
  • Спасибо
Реакции: kapelan28

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