- Регистрация
- 30.04.2018
- Сообщения
- 1 085
- Благодарностей
- 29
- Баллы
- 48
В чем логика этого?Всем привет на C# написал программу и в цикле определяется значение
если (ширина== "0") ПРОДОЛЖИТЬ;
если (ширина=="") продолжить;
если (ширина.Contains ("null")) продолжить;
если (width== "null") продолжить;
Посмотреть вложение 69223 Но значение не корректно индефицируется
если (ширина=="") продолжить;
- это верно, т.е. проверка переменной на ее пустоту.если (ширина.Contains ("null")) продолжить;
- тут вы ищите частичное вхождение пустоты... Как может быть частичное содержание пустоты? ПУСТОТА - она либо есть, либо ее нету. Почему не использовать только первый вариант? если (ширина=="") продолжить;
В чем логика этого?
если (ширина=="") продолжить;
- это верно, т.е. проверка переменной на ее пустоту.
если (ширина.Contains ("null")) продолжить;
- тут вы ищите частичное вхождение пустоты... Как может быть частичное содержание пустоты? ПУСТОТА - она либо есть, либо ее нету. Почему не использовать только первый вариант?если (ширина=="") продолжить;
Ой, я что-то напутал, вы наверное ищите текст, а не пустоту. Так как "null" выступаем в роли текста, а не как пустоты null.
[/Цитата]
Смысл в том, если есть хоть какое то значение, число или текст, тогда работа продолжается
Смысл в том, что я определяю видимость элемента, раньше делал так: если есть значение, то проверяю это число больше 0 или нет. Сейчас появилось значение null и его я не могу ни как индифицировать. По хорошому если значение==null тогда ни чего не нужно делатьОпишите пожалуйста более детально вашу проблему, что не выход то, или что выходит не верно?
Я же фото отладки скинул, или другие аргументы нужныа элемент вообще существует? Никогда не встречал null на таком аттрибуте
Ты объявляешь элемент до его проверки. Сначала через if проверь, потом уже объявляй. После этого проверяй атрибуты.Я же фото отладки скинул, или другие аргументы нужны
Вы меня не путайте, я считываю элемент с HtmlElement и ни чего не объявляю, затем делаю проверку на его значение. Ещё раз говорю, все это делается для того что бы определить видимость элемента, если это число и больше 0 тогда выполняется действиеТы объявляешь элемент до его проверки. Сначала через if проверь, потом уже объявляй. После этого проверяй атрибуты.
А если элемента больше нет на странице?я считываю элемент с HtmlElement
Вот и хочу понять как индифицировать этоА если элемента больше нет на странице?
Смысл в том, что я определяю видимость элемента, раньше делал так: если есть значение, то проверяю это число больше 0 или нет. Сейчас появилось значение null и его я не могу ни как индифицировать. По хорошому если значение==null тогда ни чего не нужно делатьнепонятно ничего. какая задача изначально стоит ?
В отладке переменная стринг=null, а не HtmlElement, но попробуюC#:HtmlElement ell; if (!tab.FindElentByXpath(".//", i).IsNull) ell = tab.FindElentByXpath(".//", i);
// Конструктор действий, тип Get
HtmlElement he = instance.ActiveTab.FindElementByXPath("//span", 0);
if (he.IsVoid) return -1;
непонятно где появился null ? в ширине элемента ? такого быть не может, так как там определенный тип int, если использовать he.Width . кстати этот способ получения ширины в сотни раз быстрее чем GetAtribute.Смысл в том, что я определяю видимость элемента, раньше делал так: если есть значение, то проверяю это число больше 0 или нет. Сейчас появилось значение null и его я не могу ни как индифицировать. По хорошому если значение==null тогда ни чего не нужно делать
c isVoid то же самоевот код с конвертации в c# с обычного кубика и там просто проверяется IsVoid у элемента.
так же можно проверить на IsNull или же сравнить he с null , но это в том случае если элемент he принудительно обнуляется где нибудь в коде дальше и используется повторно.
C#:// Конструктор действий, тип Get HtmlElement he = instance.ActiveTab.FindElementByXPath("//span", 0); if (he.IsVoid) return -1;
непонятно где появился null ? в ширине элемента ? такого быть не может, так как там определенный тип int, если использовать he.Width . кстати этот способ получения ширины в сотни раз быстрее чем GetAtribute.
Но если религия не позволяет использовать заранее просчитанные элементы, то делается тупо конвертация полученного элемента в int , командой int.Parse в сочетании с конструкцией try{}cath{}
и всякие null , которые уже не один день беспокоят, будут преобразованы в какойнить -1 или 0, ну в общем как удобнее для анализа
Мне разобраться в этом нужно, а потом разберусь сколько и чего нагородилТы уверен, что этот забор, который нагородил, потом разгребешь, если на сайте чтото поменяется?
Не помогло, код срабатывает если значение пустоеблин. ты еще не разобрался с этим ?
еще раз говорю, не используй ты эти точки останова. ну глючная же реализация. выводи в лог и делай отладку по тому что увидишь в логе.
потом ты остановил код на получении атрибута в переменную width и естественно она null
потом проверка на видимость элемента происходит путем сравнения width на больше 0. ты же остановил код не дойдя до проверки. сам элемент может быть найден, но не видим. это норма.
сотый раз говорю , выведи ты в лог все что нашел в цикле условия закомментируй, что бы увидеть картину с коллекцией элементов.
а если пойти по другому, если значение не null тогда делать?Смысл в том, что я определяю видимость элемента, раньше делал так: если есть значение, то проверяю это число больше 0 или нет. Сейчас появилось значение null и его я не могу ни как индифицировать. По хорошому если значение==null тогда ни чего не нужно делать