Input string was not in a correct format.

evgen_po

Client
Регистрация
27.08.2013
Сообщения
847
Благодарностей
528
Баллы
93
Ситуация такая. Есть клиент. У него шаблон. Все работало. Клиент обновился до версии 5.10.0.2.
Начала возникать ошибка.
В этом коде.

var tab = instance.ActiveTab;
var he = tab.FindElementByAttribute("span","innerhtml","Отправить","text",0);
int height = Convert.ToInt32(he.GetAttribute("height"));
if (height !=0)
{
he.Click();

for (int i=0; i<15; i++)
{
var win_error = tab.FindElementByAttribute("div","class","js-error notify-message","text",0);
if (!win_error.IsVoid)
{
int height2 = Convert.ToInt32(win_error.GetAttribute("height"));
if (height2 != 0)
{
project.Variables["outer_bad_mail"].Value = win_error.GetAttribute("outerhtml");
return "есть всплывашка";
}
else System.Threading.Thread.Sleep(500);
}
else System.Threading.Thread.Sleep(500);
}
}
return "нет всплывашки";

Пишет это:
Выполнение действия CSharp OwnCode Input string was not in a correct format.
В переменной project.Variables["outer_bad_mail"].Value - на этот момент или нет ничего, или строка какое-то мыло.
Почему это может возникать?
 

VladZen

Administrator
Команда форума
Регистрация
05.11.2014
Сообщения
22 233
Благодарностей
5 846
Баллы
113
Вероятно нет значения в переменной. Она пустая.
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 100
Баллы
113
А если так?
project.Variables["outer_bad_mail"].Value = win_error.GetAttribute("outerhtml").ToString();
 

ZennoScript

Moderator
Регистрация
04.03.2011
Сообщения
4 450
Благодарностей
1 880
Баллы
113
Вероятно нет значения в переменной. Она пустая.
Так а какое это имеет значение? Если переменная пустая, разве ей нельзя что либо присвоить? Тут что то совсем другое.
 

evgen_po

Client
Регистрация
27.08.2013
Сообщения
847
Благодарностей
528
Баллы
93
Вероятно нет значения в переменной. Она пустая.
При чем тут то, что переменная проекта пустая?
И я писал - этот баг возникает и в случае когда в ней нет ничего(т.е. как Вы говорите пустая), так и когда в ней есть значение.
Что от меня нужно?
Баг начинает проявлять себя при многопотоке. Когда запущен один поток - вроде бы эта ошибка не появляется.
Это же разрабы что-то химичили, не я. До этого в этом кубике никогда не было ошибки, по-тому что если посмотреть на код, там негде ей возникать.

Еще замечено что при падении инстанса, все ифы начинают работать только по False.
Начали возникать ошибки в тех экшенах, в которых вообще нечему ломаться. Например: кубик - Эмуляция задержек.
Почему это все может быть?
 

evgen_po

Client
Регистрация
27.08.2013
Сообщения
847
Благодарностей
528
Баллы
93
Вероятно нет значения в переменной. Она пустая.
И вообще - я написал про эту ошибку в разделе баг, не просто потому что так хочется.
А вы мне ответили как новичку, который в коде типо ошибся.
Если бы внимательно читали - я писал, что это начало проявляться после обновления.
Раньше никогда не было таких ошибок в этом месте.
В очередной раз убеждаюсь, что когда пишу о каком-то не сильно явном баге, тут еще с пеной у рта нужно доказать вам что он есть.
Зае...бал такой Ваш подход
 
  • Спасибо
Реакции: arhip1985 и Solus

VladZen

Administrator
Команда форума
Регистрация
05.11.2014
Сообщения
22 233
Благодарностей
5 846
Баллы
113
Зае...бал такой Ваш подход
Пожалуйста выбирайте выражения. Свой код С# - это сторонний функционал добавляемый пользователем, его отладкой он должен заниматься сам. У нас встроен лишь редактор и компилятор. Если выдается ошибка компиляции, значит у вас некорректный код. В новой версии появился функционал пошаговой отладки с помощью брекпоинтов, воспользуйтесь им и отладьте свой сниппет.

Скорее всего у вас просто не был найден элемент по аттрибутам,
и вот эта строка int height = Convert.ToInt32(he.GetAttribute("height")); выдает такую ошибку.

Посмотрите наш пример. У нас все работает, никаких багов нет.
 

Вложения

evgen_po

Client
Регистрация
27.08.2013
Сообщения
847
Благодарностей
528
Баллы
93
Пожалуйста выбирайте выражения. Свой код С# - это сторонний функционал добавляемый пользователь, его отладкой он должен заниматься сам. У нас встроен лишь редактор и компилятор. Если выдается ошибка компиляции, значит у вас некорректный код. В новой версии появился функционал пошаговой отладки с помощью брекпоинтов, воспользуйтесь им и отладьте свой сниппет.

Скорее всего у вас просто не был найден элемент по аттрибутам,
и вот эта строка int height = Convert.ToInt32(he.GetAttribute("height")); выдает такую ошибку.

Посмотрите наш пример. У нас все работает, никаких багов нет.
Хорошо, спасибо!
Только как так получается что на версии 5.9.9.1 эта ошибка не разу не встречалась, а на версии 5.10.0.2 - появляется почти постоянно?
Ведь код один и тот же, шаблон один и тот же, конфиг железа один и тот же.
Можете это объяснить?
Даже если есть ошибка в коде - почему она проявляется только на последней версии?
 

evgen_po

Client
Регистрация
27.08.2013
Сообщения
847
Благодарностей
528
Баллы
93
Скорее всего у вас просто не был найден элемент по аттрибутам,
и вот эта строка int height = Convert.ToInt32(he.GetAttribute("height")); выдает такую ошибку.
В коде перед этим есть и такая запись
var win_error = tab.FindElementByAttribute("div","class","js-error notify-message","text",0);
if (!win_error.IsVoid)
{
}
которая раз таки проверяет найден был элемент или нет. Вы дурака то из меня не делайте, пожалуйста!
 

evgen_po

Client
Регистрация
27.08.2013
Сообщения
847
Благодарностей
528
Баллы
93
Посмотрите наш пример. У нас все работает, никаких багов нет.
Юмористы, Вы мне скинули точно такой же код как и мой, просто ищете в начале другой элемент.
Аффигеть.
У меня тоже код работает. Ошибка начинает возникать при многопотоке.
Я пытаюсь объяснить что имеет место быть какому-то непонятному багу, а не наехать на кого-то.
Капец какой-то!
 

ZennoScript

Moderator
Регистрация
04.03.2011
Сообщения
4 450
Благодарностей
1 880
Баллы
113
Пожалуйста выбирайте выражения. Свой код С# - это сторонний функционал добавляемый пользователь, его отладкой он должен заниматься сам. У нас встроен лишь редактор и компилятор. Если выдается ошибка компиляции, значит у вас некорректный код. В новой версии появился функционал пошаговой отладки с помощью брекпоинтов, воспользуйтесь им и отладьте свой сниппет.

Скорее всего у вас просто не был найден элемент по аттрибутам,
и вот эта строка int height = Convert.ToInt32(he.GetAttribute("height")); выдает такую ошибку.

Посмотрите наш пример. У нас все работает, никаких багов нет.
Что то мне так кажется, что по какой то причине не отдаёт height элемента, хотя как такое может быть, если элемент найден?
Ведь до этого есть проверка на наличие элемента - if (!win_error.IsVoid)
Т.е. элемент есть, но его ширина не конвертируется в число. Что там может быть, кроме положительного, отрицательного значения или нуля?
 

shade

Client
Регистрация
19.11.2010
Сообщения
580
Благодарностей
346
Баллы
63
А ты уверен что код:
Код:
he.GetAttribute("height")
работает верно, т.к. проверки
Код:
!he.IsVoid
у тебя в коде нет. Если элемент he пустой то и атрибут у тебя будет пустой строкой, в итоге ошибка в методе Convert.ToInt32 Input string was not in a correct format.
 

shade

Client
Регистрация
19.11.2010
Сообщения
580
Благодарностей
346
Баллы
63
Может у тебя элемент he не загрузился или не найден по условиям поиска?
 

evgen_po

Client
Регистрация
27.08.2013
Сообщения
847
Благодарностей
528
Баллы
93
Может у тебя элемент he не загрузился или не найден по условиям поиска?
У меня на бед энде скрин инстанса делается. И там видно что клик по элементу проходит. Т.е. код обрывается после выполнения клика!
За замечание спасибо! Но если бы ошибка была действительно в этом - она бы возникала и на ранних версиях это раз, и клик бы не срабатывал это два!
 

shade

Client
Регистрация
19.11.2010
Сообщения
580
Благодарностей
346
Баллы
63
Есть подозрение что следует добавить после
Код:
var tab = instance.ActiveTab;
следующий код
Код:
tab.WaitDownloading();
У меня когда то было такое что во много потоке иногда элементы страницы и какие то скрипты не успевали загружаться. Элемент на странице был а вот его атрибуты были какие-то другие и в итоге иногда возникали ошибки.

И ещё советую добавить после строчки
Код:
he.Click();
тот же код
Код:
tab.WaitDownloading();
по той же самой причине.
 

evgen_po

Client
Регистрация
27.08.2013
Сообщения
847
Благодарностей
528
Баллы
93
Есть подозрение что следует добавить после
Код:
var tab = instance.ActiveTab;
следующий код
Код:
tab.WaitDownloading();
У меня когда то было такое что во много потоке иногда элементы страницы и какие то скрипты не успевали загружаться. Элемент на странице был а вот его атрибуты были какие-то другие и в итоге иногда возникали ошибки.

И ещё советую добавить после строчки
Код:
he.Click();
тот же код
Код:
tab.WaitDownloading();
по той же самой причине.
Спасибо за советы! Я без сарказма.
Но так написано специально.
Окончания загрузки инстанса в начале там не нужно, т.к. до этого на странице происходит куча действий - заполняются поля и т.д., т.е. страница уже загружена до этого кода. И до этого кода, есть проверка на загруженность страницы.
Если после клика добавить ожидание загрузки, тогда ломается актуальность этого кода. Я бы мог клик и стандартными экшенами прописать. Так и было в самом самом начале.
Но - это всплывающее окно, которое я отлавливаю в коде - оно появляется почти моментально и через пару секунд исчезает. И если ждать окончания загрузки страницы - то его не поймать.
Потому оно и ждется в этом коде несколько секунд, появится типо или нет.
Т.е. - все что в коде, это как бы так надо.
Меня самое главное смущает другое - этот код работал безошибочно уже больше чем пол года. Я регулярно проверяю наличие ошибок у клиента, и никогда (подчеркиваю), никогда в нем не было подобной ошибки.
Вообще никогда на нем не обрывалось.
Все эти приколы - появились сразу же после обновления до 5.10.0.2!
 

evgen_po

Client
Регистрация
27.08.2013
Сообщения
847
Благодарностей
528
Баллы
93
В новой версии появился функционал пошаговой отладки с помощью брекпоинтов, воспользуйтесь им и отладьте свой сниппет.
Он был отлажен в том то и дело, и пол года работал без ошибок.
Переотладить код из-за новой версии - Вы это имеете ввиду?
 

VladZen

Administrator
Команда форума
Регистрация
05.11.2014
Сообщения
22 233
Благодарностей
5 846
Баллы
113
Во-первых в новой версии обновился движок браузера Firefox. Там вполне может что-то отрабатывать по-другом по сравнению с 5.9 Не надо сразу говорить, что у нас баг. Тем более я думал, что у вас вообще код перестал работать, а у вас оказывается только в многопотоке иногда возникает ошибка.
Приложите пример шаблона с этом кодом. который воспроизводит ошибку. Потому что вы нам выложили код, он у вас работает с элементами какого-то сайта, а мы даже не знаем на каком.
Также повторите ошибку и сделайте после этого диагностику., пришлите нам report.zip.
 

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