Кубик C# - Выполнение действия CSharp OwnCode. Входная строка имела неверный формат.

nail2501

Client
Регистрация
19.04.2015
Сообщения
481
Благодарностей
38
Баллы
28
ошибка в строчках отвечающих за преобразование STRING в INT.

HtmlElement he = instance.ActiveTab.FindElementByAttribute(Convert.ToString(project.Variables["tag"]), "class", "тут класс элемента tag", "regexp", 0);
string left_s = he.GetAttribute("leftInbrowser");
string top_s = he.GetAttribute("topInbrowser");
int left_i = Int32.Parse(left_s);
int top_i = Int32.Parse(top_s);

Такой вариант написания ту же ошибку выдает:
HtmlElement he = instance.ActiveTab.FindElementByAttribute(Convert.ToString(project.Variables["tag"]), "class", "тут класс элемента tag", "regexp", 0);
string left_s = he.GetAttribute("leftInbrowser");
string top_s = he.GetAttribute("topInbrowser");
int left_i = Convert.ToInt32(left_s);
int top_i = Convert.ToInt32(top_s);
 
Последнее редактирование:

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 786
Благодарностей
2 452
Баллы
113
ошибка в строчках отвечающих за преобразование STRING в INT.
Переменную в коде нужно указывать так: project.Variables["tag "].Value, а Вы указали так: project.Variables["tag"] .
Если исправите и не поможет - выведите в лог содержимое переменных left_s и top_s, project.Variables["tag "].Value - убедитесь что там действительно есть число, которое можно привести к int, так как вполне возможно что нужный элемент не найден на страничке, и тогда эти переменные могут получить например значение null, которое не получится сконвертировать.
Также прежде чем брать значения переменных возможно стоит проверить найден ли был какой-то элемент.

89160


Вот, проверил, вроде корректно работает:

C#:
project.Variables["tag"].Value = "span"; // Демо данные
project.Variables["tag_id"].Value = "t1"; // тут класс элемента tag
HtmlElement he = instance.ActiveTab.FindElementByAttribute(project.Variables["tag"].Value, "id", project.Variables["tag_id"].Value , "text", 0);

if(he.Width > 0) { // проверка ширины элемента - если больше 0 - существует
    string left_s = he.GetAttribute("leftInbrowser");
    string top_s = he.GetAttribute("topInbrowser");
    project.SendInfoToLog(string.Format("left_s={0} top_s={1}",left_s, top_s));     // в лог вывожу строки
    
    int left_i = Int32.Parse(left_s);
    int top_i = Int32.Parse(top_s);   
    project.SendInfoToLog(string.Format("left_i={0} top_s={1}",left_i,top_i)); // в лог вывожу числа
}
 
Последнее редактирование:
  • Спасибо
Реакции: borzd и nail2501

nail2501

Client
Регистрация
19.04.2015
Сообщения
481
Благодарностей
38
Баллы
28
Исправил. Действительно, продолжает выдавать ошибку. В переменных left_s и top_s может быть пустое значение. Так как нужный тэг с нужным классом не всегда может быть найден на странице, то соответственно координаты его, которые я получаю в left_s и top_s пустые. Т.е. пустое значение нельзя конвертировать в INT?
В этом может быть дело? Как это можно обойти, не подскажете?
 

nail2501

Client
Регистрация
19.04.2015
Сообщения
481
Благодарностей
38
Баллы
28
Переменную в коде нужно указывать так: project.Variables["tag "].Value, а Вы указали так: project.Variables["tag"] .
Если исправите и не поможет - выведите в лог содержимое переменных left_s и top_s, project.Variables["tag "].Value - убедитесь что там действительно есть число, которое можно привести к int, так как вполне возможно что нужный элемент не найден на страничке, и тогда эти переменные могут получить например значение null, которое не получится сконвертировать.
Также прежде чем брать значения переменных возможно стоит проверить найден ли был какой-то элемент.

Посмотреть вложение 89160

Вот, проверил, вроде корректно работает:

C#:
project.Variables["tag"].Value = "span"; // Демо данные
project.Variables["tag_id"].Value = "t1"; // тут класс элемента tag
HtmlElement he = instance.ActiveTab.FindElementByAttribute(project.Variables["tag"].Value, "id", project.Variables["tag_id"].Value , "text", 0);

if(he.Width > 0) { // проверка ширины элемента - если больше 0 - существует
    string left_s = he.GetAttribute("leftInbrowser");
    string top_s = he.GetAttribute("topInbrowser");
    project.SendInfoToLog(string.Format("left_s={0} top_s={1}",left_s, top_s));     // в лог вывожу строки
   
    int left_i = Int32.Parse(left_s);
    int top_i = Int32.Parse(top_s);  
    project.SendInfoToLog(string.Format("left_i={0} top_s={1}",left_i,top_i)); // в лог вывожу числа
}
Спасибо.
Сразу не увидел ответ.
 

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 786
Благодарностей
2 452
Баллы
113
Исправил. Действительно, продолжает выдавать ошибку. В переменных left_s и top_s может быть пустое значение. Так как нужный тэг с нужным классом не всегда может быть найден на странице, то соответственно координаты его, которые я получаю в left_s и top_s пустые. Т.е. пустое значение нельзя конвертировать в INT?
В этом может быть дело? Как это можно обойти, не подскажете?
Попробуйте построить что-то вроде этого фрагмента с условиями
C#:
project.Variables["tag"].Value = "span"; // Демо данные
project.Variables["tag_id"].Value = "t1"; // тут класс элемента tag
HtmlElement he = instance.ActiveTab.FindElementByAttribute(project.Variables["tag"].Value, "id", project.Variables["tag_id"].Value , "text", 0);

int left_i = 0;
int top_i = 0;
if(he.Width > 0) { // проверка ширины элемента - если больше 0 - существует

    string left_s = he.GetAttribute("leftInbrowser");
    string top_s = he.GetAttribute("topInbrowser");

    project.SendInfoToLog(string.Format("left_s={0} top_s={1}",left_s, top_s));     // в лог вывожу строки  
    try {
      left_i = Int32.Parse(left_s);
      top_i = Int32.Parse(top_s);
    }
    catch {
        // в left_i и top_i будет значение 0, но ошибки не будет.
    }

    project.SendInfoToLog(string.Format("left_i={0} top_s={1}",left_i,top_i)); // в лог вывожу числа

}
else {
    //  left_i и top_i также будет значение 0, если значение ширины не найдено...
}
Спасибо.
Сразу не увидел ответ.
Я просто ответил, а потом ответ дополнил.
 
  • Спасибо
Реакции: djaga и nail2501

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