Самый простой способ поставить счётчик для timeout?

phelix

Пользователь
Регистрация
28.04.2021
Сообщения
62
Благодарностей
12
Баллы
8
Ситуация такая:
- Есть код С# которий проверяет наличие элемента для того чтоб увидеть если страница полностью загрузилось (java итд)
- Если не находит, код даёт отрецательный ответ, что в итоге переводит на паузу 1 секунд и снова обратно на C# код
- Хочу поставить счётчик, чтоб он делал так максимум 30 раз (если не нашол)



Мне извесен способ поставить variable, патом до паузы поставить фунцию которая увиличевает этот variable на 1, и патом проверка если variable = 30. Этот метод сложен тем что этих С# "чекеров" у меня в проекте штук 20. Создаёт бордак и трудно патом понимать что где.

Посоветуйте, как в этот код можно вставить строчку или две для счетчика что если привышал то уходил в bad end?

------------------------------------

HtmlElement ui = instance.ActiveTab.GetDocumentByAddress("0").FindElementByAttribute("div", "innertext", "Verify Email", "regexp", 0);
if (ui.IsVoid) throw new Exception("not found, page not loaded");

------------------------------------

Зарание благодарю
 

trecho

Client
Регистрация
12.07.2018
Сообщения
171
Благодарностей
124
Баллы
43
просто пользуйтесь экшеном Выполнить событие - focus, чтобы подождать появления элемента
 

Reysh

Client
Регистрация
02.12.2018
Сообщения
198
Благодарностей
132
Баллы
43
C#:
for (int i = 0; i < 30; i++)
{
    HtmlElement ui = instance.ActiveTab.GetDocumentByAddress("0").FindElementByAttribute("div", "innertext", "Verify Email", "regexp", 0);
    if (ui.IsVoid)
    {
        System.Threading.Thread.Sleep(1000);
    }else return 0;
}
throw new Exception("not found, page not loaded");
 
  • Спасибо
Реакции: phelix

viol2021

Client
Регистрация
12.01.2021
Сообщения
482
Благодарностей
179
Баллы
43
Ситуация такая:
- Есть код С# которий проверяет наличие элемента для того чтоб увидеть если страница полностью загрузилось (java итд)
- Если не находит, код даёт отрецательный ответ, что в итоге переводит на паузу 1 секунд и снова обратно на C# код
- Хочу поставить счётчик, чтоб он делал так максимум 30 раз (если не нашол)



Мне извесен способ поставить variable, патом до паузы поставить фунцию которая увиличевает этот variable на 1, и патом проверка если variable = 30. Этот метод сложен тем что этих С# "чекеров" у меня в проекте штук 20. Создаёт бордак и трудно патом понимать что где.

Посоветуйте, как в этот код можно вставить строчку или две для счетчика что если привышал то уходил в bad end?

------------------------------------

HtmlElement ui = instance.ActiveTab.GetDocumentByAddress("0").FindElementByAttribute("div", "innertext", "Verify Email", "regexp", 0);
if (ui.IsVoid) throw new Exception("not found, page not loaded");

------------------------------------

Зарание благодарю
Tab tab = instance.ActiveTab;
int i = 0;
while(true)
{
var he = tab.FindElementByXPath("//*[text()='Найти']",0);
if(he.IsVoid){Thread.Sleep(1000);i++;}
else{break;}
if(i >= 30)throw new Exception("not found, page not loaded");
}
 

phelix

Пользователь
Регистрация
28.04.2021
Сообщения
62
Благодарностей
12
Баллы
8
C#:
for (int i = 0; i < 30; i++)
{
    HtmlElement ui = instance.ActiveTab.GetDocumentByAddress("0").FindElementByAttribute("div", "innertext", "Verify Email", "regexp", 0);
    if (ui.IsVoid)
    {
        System.Threading.Thread.Sleep(1000);
    }else return 0;
}
throw new Exception("not found, page not loaded");
Спасибо!!!
 

Carty

Client
Регистрация
16.06.2021
Сообщения
39
Благодарностей
66
Баллы
18
Циклы тоже хороший вариант, но они слишком громоздкие и мозолят глаза, особенно если таких циклов будет слишком много. Как вариант, для реализации таких ожиданий и проверок есть прекрасное решение от @amyboose в стиле Selenium'а.
 

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