[SOLVED] Помогите с циклом C#

Tsuk15

Client
Регистрация
25.04.2017
Сообщения
102
Благодарностей
40
Баллы
28
Всем привет. Написал небольшой код для ожидания элемента на странице.
Код:
var elementpost = instance.ActiveTab.FindElementByAttribute("button","innertext","Post comment","regexp","0");
elementpost.RiseEvent("click","Full");  //это скорее всего к вопросу не имеет отношения, но решил целиком показать
for (int i = 0; i < 5 ; i++ )
{
var elementTrue = instance.ActiveTab.FindElementByAttribute("strong","innertext","Thanks for your comment!","regexp","0"); //задаю парметры поиска
    if (!elementTrue.IsVoid)
    {
        var elementclose = instance.ActiveTab.FindElementByAttribute("div","class","x-close","regexp","0");   //параметры поиска крестика
        System.Threading.Thread.Sleep(2000);
        elementclose.RiseEvent("click","Full");  //если элемент есть, то жду 2 секунды и кликаю по крестику
    }
    else
    {
        System.Threading.Thread.Sleep(1000); //если элемента нет, то жду секунду и повторяю цикил (и так 5 раз)
    }
}
После пяти итераций элемент может быть не найден и в этом случае мне нужно, что бы результат кода был "no" В общем я не могу понять куда мне нужно вставить return "no", что бы этот результат был только после неудачного поиска элемента
 

SHELBY

Client
Регистрация
09.09.2016
Сообщения
237
Благодарностей
291
Баллы
63
return "no"; за циклом
И надо еще return "yes", в условие когда произойдет клик по крестику. Иначе будет всегда return "no"
 

surrealmix

Client
Регистрация
07.03.2013
Сообщения
715
Благодарностей
410
Баллы
63
C#:
var isFound = false;
for (int i = 0; i < 5 ; i++ )
{
    var elementTrue = instance.ActiveTab.FindElementByAttribute("strong","innertext","Thanks for your comment!","regexp","0"); //задаю парметры поиска
    if (!elementTrue.IsVoid)
    {
        var elementclose = instance.ActiveTab.FindElementByAttribute("div","class","x-close","regexp","0");   //параметры поиска крестика
        System.Threading.Thread.Sleep(2000);
        elementclose.RiseEvent("click","Full");  //если элемент есть, то жду 2 секунды и кликаю по крестику
        isFound = true;
    }
    else
    {
        System.Threading.Thread.Sleep(1000); //если элемента нет, то жду секунду и повторяю цикил (и так 5 раз)
    }
}

if(isFound) return "yes";
else return "no";
 

Tsuk15

Client
Регистрация
25.04.2017
Сообщения
102
Благодарностей
40
Баллы
28
return "no"; за циклом
И надо еще return "yes", в условие когда произойдет клик по крестику. Иначе будет всегда return "no"
Точно! Спасибо! Ошибка была именно в том, что я return "ok" не писал. Сейчас все работает))
 
  • Спасибо
Реакции: SHELBY

Tsuk15

Client
Регистрация
25.04.2017
Сообщения
102
Благодарностей
40
Баллы
28
C#:
var isFound = false;
for (int i = 0; i < 5 ; i++ )
{
    var elementTrue = instance.ActiveTab.FindElementByAttribute("strong","innertext","Thanks for your comment!","regexp","0"); //задаю парметры поиска
    if (!elementTrue.IsVoid)
    {
        var elementclose = instance.ActiveTab.FindElementByAttribute("div","class","x-close","regexp","0");   //параметры поиска крестика
        System.Threading.Thread.Sleep(2000);
        elementclose.RiseEvent("click","Full");  //если элемент есть, то жду 2 секунды и кликаю по крестику
        isFound = true;
    }
    else
    {
        System.Threading.Thread.Sleep(1000); //если элемента нет, то жду секунду и повторяю цикил (и так 5 раз)
    }
}

if(isFound) return "yes";
else return "no";
Спасибо)) тоже интересный вариант, буду иметь ввиду
 

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