Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.05.2019, 16:34   #1
mrdgm2025
Новичок
Джуниор
 
Регистрация: 08.05.2019
Сообщений: 1
Восклицание Код останавливатеся

Бот иногда зависает на этой части кода по вине 3-ей стороны
как добавить правило типа - если код выполняется больше 1 минуты, то пропуск этой задачи
Код:
            while (true)
            {
                try
                {
                    gameDiv = driver.FindClickableElement(gameRowPath, GlobalTimeouts.SmallTimeout);
                    break;
                }
                catch
                {
                    var loader = driver.FindElement(By.XPath("//div[@class='virtual-scrolling-bar']"));
                    driver.ScrollToElement(loader);
                    await Task.Delay(GlobalTimeouts.SmallTimeout);
                }
            }

Последний раз редактировалось mrdgm2025; 08.05.2019 в 16:55.
mrdgm2025 вне форума Ответить с цитированием
Старый 08.05.2019, 16:38   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

https://xpinjection.com/articles/wai...-in-webdriver/
p51x на форуме Ответить с цитированием
Старый 20.05.2019, 21:53   #3
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию

Цитата:
Сообщение от mrdgm2025 Посмотреть сообщение
как добавить правило типа - если код выполняется больше 1 минуты, то пропуск этой задачи
Самый простой способ - такты. Перед началом цикла ставим текущую метку времени. На каждой итерации цикла проверяем: если разница между текущим и изначальным временем больше требуемой - break.
Код:
long timeStart=DateTime.Now.Ticks;
while (true)
{
	// здесь ваш код
	if (DateTime.Now.Ticks-timeStart>600000000) // 600 миллионов тактов = одна минута
		break;
}
Подробнее про такты.
Подпись ? Не, не слышал ...

Последний раз редактировалось OmegaBerkut; 21.05.2019 в 10:55.
OmegaBerkut вне форума Ответить с цитированием
Старый 23.05.2019, 18:33   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от OmegaBerkut Посмотреть сообщение
Самый простой способ - такты
самое просто и удобное не опускаться до тиков. а использовать TimeSpan напрямую.
все тоже самое, но без тиков.
Код:
var timeStart=DateTime.Now;
var timeout = TimeSpan.FromMinutes(1);
while (true)
{
	// здесь ваш код
	if (DateTime.Now-timeStart>timeout ) 
		break;
}
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 23.05.2019, 22:40   #5
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
все тоже самое
Ну, не совсем; вы используете две переменных, я - одну. Но это придирка.
На деле же, с тактами и числами с "простыми" переменными - более наглядно; да и лично мне всегда было проще считать тактами.
TimeSpan и DateTime только в случае необходимости вывода соответствующей информации. Или при вводе этой же информации пользователем, для простого формирования информации о всё тех же тактах =)
Подпись ? Не, не слышал ...
OmegaBerkut вне форума Ответить с цитированием
Старый 24.05.2019, 00:22   #6
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Забавно ваши аватарки смотрятся вместе ))
Black Fregat вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск