Input string was not in a correct format.

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

evgen_po

Client
Регистрация
27.08.2013
Сообщения
858
Реакции
533
Баллы
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 - на этот момент или нет ничего, или строка какое-то мыло.
Почему это может возникать?
 
Вероятно нет значения в переменной. Она пустая.
 
А если так?
project.Variables["outer_bad_mail"].Value = win_error.GetAttribute("outerhtml").ToString();
 
Вероятно нет значения в переменной. Она пустая.

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

Еще замечено что при падении инстанса, все ифы начинают работать только по False.
Начали возникать ошибки в тех экшенах, в которых вообще нечему ломаться. Например: кубик - Эмуляция задержек.
Почему это все может быть?
 
Вероятно нет значения в переменной. Она пустая.
И вообще - я написал про эту ошибку в разделе баг, не просто потому что так хочется.
А вы мне ответили как новичку, который в коде типо ошибся.
Если бы внимательно читали - я писал, что это начало проявляться после обновления.
Раньше никогда не было таких ошибок в этом месте.
В очередной раз убеждаюсь, что когда пишу о каком-то не сильно явном баге, тут еще с пеной у рта нужно доказать вам что он есть.
Зае...бал такой Ваш подход
 
  • Оценить
Реакции: arhip1985 и Solus
Зае...бал такой Ваш подход
Пожалуйста выбирайте выражения. Свой код С# - это сторонний функционал добавляемый пользователем, его отладкой он должен заниматься сам. У нас встроен лишь редактор и компилятор. Если выдается ошибка компиляции, значит у вас некорректный код. В новой версии появился функционал пошаговой отладки с помощью брекпоинтов, воспользуйтесь им и отладьте свой сниппет.

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

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

Вложения

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

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

Посмотрите наш пример. У нас все работает, никаких багов нет.
Хорошо, спасибо!
Только как так получается что на версии 5.9.9.1 эта ошибка не разу не встречалась, а на версии 5.10.0.2 - появляется почти постоянно?
Ведь код один и тот же, шаблон один и тот же, конфиг железа один и тот же.
Можете это объяснить?
Даже если есть ошибка в коде - почему она проявляется только на последней версии?
 
Скорее всего у вас просто не был найден элемент по аттрибутам,
и вот эта строка int height = Convert.ToInt32(he.GetAttribute("height")); выдает такую ошибку.
В коде перед этим есть и такая запись
var win_error = tab.FindElementByAttribute("div","class","js-error notify-message","text",0);
if (!win_error.IsVoid)
{
}
которая раз таки проверяет найден был элемент или нет. Вы дурака то из меня не делайте, пожалуйста!
 
Посмотрите наш пример. У нас все работает, никаких багов нет.
Юмористы, Вы мне скинули точно такой же код как и мой, просто ищете в начале другой элемент.
Аффигеть.
У меня тоже код работает. Ошибка начинает возникать при многопотоке.
Я пытаюсь объяснить что имеет место быть какому-то непонятному багу, а не наехать на кого-то.
Капец какой-то!
 
Пожалуйста выбирайте выражения. Свой код С# - это сторонний функционал добавляемый пользователь, его отладкой он должен заниматься сам. У нас встроен лишь редактор и компилятор. Если выдается ошибка компиляции, значит у вас некорректный код. В новой версии появился функционал пошаговой отладки с помощью брекпоинтов, воспользуйтесь им и отладьте свой сниппет.

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

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

Что то мне так кажется, что по какой то причине не отдаёт height элемента, хотя как такое может быть, если элемент найден?
Ведь до этого есть проверка на наличие элемента - if (!win_error.IsVoid)
Т.е. элемент есть, но его ширина не конвертируется в число. Что там может быть, кроме положительного, отрицательного значения или нуля?
 
А ты уверен что код:
Код:
Развернуть Свернуть Копировать
he.GetAttribute("height")
работает верно, т.к. проверки
Код:
Развернуть Свернуть Копировать
!he.IsVoid
у тебя в коде нет. Если элемент he пустой то и атрибут у тебя будет пустой строкой, в итоге ошибка в методе Convert.ToInt32 Input string was not in a correct format.
 
Может у тебя элемент he не загрузился или не найден по условиям поиска?
 
Может у тебя элемент he не загрузился или не найден по условиям поиска?
У меня на бед энде скрин инстанса делается. И там видно что клик по элементу проходит. Т.е. код обрывается после выполнения клика!
За замечание спасибо! Но если бы ошибка была действительно в этом - она бы возникала и на ранних версиях это раз, и клик бы не срабатывал это два!
 
Есть подозрение что следует добавить после
Код:
Развернуть Свернуть Копировать
var tab = instance.ActiveTab;
следующий код
Код:
Развернуть Свернуть Копировать
tab.WaitDownloading();

У меня когда то было такое что во много потоке иногда элементы страницы и какие то скрипты не успевали загружаться. Элемент на странице был а вот его атрибуты были какие-то другие и в итоге иногда возникали ошибки.

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

У меня когда то было такое что во много потоке иногда элементы страницы и какие то скрипты не успевали загружаться. Элемент на странице был а вот его атрибуты были какие-то другие и в итоге иногда возникали ошибки.

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

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