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

  • Автор темы Автор темы phelix
  • Дата начала Дата начала

phelix

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

zenno-111111.png


Мне извесен способ поставить 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");

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

Зарание благодарю
 
просто пользуйтесь экшеном Выполнить событие - focus, чтобы подождать появления элемента
 
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
Ситуация такая:
- Есть код С# которий проверяет наличие элемента для того чтоб увидеть если страница полностью загрузилось (java итд)
- Если не находит, код даёт отрецательный ответ, что в итоге переводит на паузу 1 секунд и снова обратно на C# код
- Хочу поставить счётчик, чтоб он делал так максимум 30 раз (если не нашол)

zenno-111111.png


Мне извесен способ поставить 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");
}
 
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");
Спасибо!!!
 
Циклы тоже хороший вариант, но они слишком громоздкие и мозолят глаза, особенно если таких циклов будет слишком много. Как вариант, для реализации таких ожиданий и проверок есть прекрасное решение от @amyboose в стиле Selenium'а.
 

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