Некоректное определение HtmlElementa

SlavenTyz

Client
Регистрация
30.04.2018
Сообщения
1 085
Благодарностей
29
Баллы
48
Сложность в том что HtmlElement по факту отсутствует, а при условие его определения, данное условие выполняется, иначе HtmlElement-отсутствует а if(!HtmlElement.IsVoid) выполняется

Смысл в том, что когда проверяю условие на присутствие условия if наличие HTML элемента if(!HTML элемента.IsVoid) , то оно в любом случае выполняется т.е если его да же нет и это видно в самой программе. определил во время отладки, клинул на этот элемент и там видно либо False или в других случаях пишется что выпало исключение. В любом случае, в дереве элементов его нет, а условие выполняется.

Как избежать этот глюк


upload_2018-12-12_19-28-26.png
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
Мне кажется у тебя выстроена одна логика действий, а мыслишь ты по другой. Расскажи алгоритм действий
 

SlavenTyz

Client
Регистрация
30.04.2018
Сообщения
1 085
Благодарностей
29
Баллы
48
Логика такая, в окне с сообщениями перебираю всех людей и если находится новое сообщение, то есть есть цифра, как показано на картинке, то кликает на него. В дереве элементов я указал элемент, который отвечает за кол-во сообщений и смысл в том, что если этого элемента нет, то клик на него все равно происходит
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
Ты перебираешь людей, а элемент ищешь относительно всей страницы, а не выбранного человека
 

SlavenTyz

Client
Регистрация
30.04.2018
Сообщения
1 085
Благодарностей
29
Баллы
48

SlavenTyz

Client
Регистрация
30.04.2018
Сообщения
1 085
Благодарностей
29
Баллы
48

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113

SlavenTyz

Client
Регистрация
30.04.2018
Сообщения
1 085
Благодарностей
29
Баллы
48
Ну а метод FindElementByXpath и путь икспаф говорит, что ты ищешь относительно всей страницы, а не конкретного человека
Где это ты увидел. Тем более у меня этот метод лежит в цикле и с изменением i-номер совпадения, меняются данные человека (Имя, возраст)
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
Где это ты увидел. Тем более у меня этот метод лежит в цикле и с изменением i-номер совпадения, меняются данные человека (Имя, возраст)
ну так номер совпадения в данной логике никак не привязан к человеку. Ты берёшь первого человека, а метод берет первый элемент. И ему пофиг, какого человека ты там обрабатываешь, ты ему не объяснил, что искать надо строго по потомкам этого человека. Он ищет по всей странице и находит первый удовлетворительный элемент, а этот первый может быть хоть в конце, хоть и по критериям он будет первый
 

SlavenTyz

Client
Регистрация
30.04.2018
Сообщения
1 085
Благодарностей
29
Баллы
48
Он здесь ищет и ищет в цикле, при этом меняется имя чуваков upload_2018-12-12_20-6-26.png
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
Ты меня не понимаешь... Короче, у тебя 2 варианта логики
1. Ты собираешь всех людей как html элементы в коллекцию. Перебираешь их и ищешь среди их потомков элемент, отвечающий за число смсок. Возможно путь придётся подправить.
2. Ты через текущий xpath собираешь все элементы в коллекцию. Перебираешь их и вычисляешь родительские элементы. В родителях вычисляешь людей, имена или ссылки что тебе нужны ( я не знаю, что именно)

Я не знаю всего твоего кода, но в текущем варианте логика кажется неправильной
 
  • Спасибо
Реакции: Yuriy Zymlex

SlavenTyz

Client
Регистрация
30.04.2018
Сообщения
1 085
Благодарностей
29
Баллы
48
Ты меня не понимаешь... Короче, у тебя 2 варианта логики
1. Ты собираешь всех людей как html элементы в коллекцию. Перебираешь их и ищешь среди их потомков элемент, отвечающий за число смсок. Возможно путь придётся подправить.
2. Ты через текущий xpath собираешь все элементы в коллекцию. Перебираешь их и вычисляешь родительские элементы. В родителях вычисляешь людей, имена или ссылки что тебе нужны ( я не знаю, что именно)

Я не знаю всего твоего кода, но в текущем варианте логика кажется неправильной
Кажется я начинаю понимать, только я не понимаю чем отличается HtmlElementCollection от HtmlElement при условии что пути XPath одинаковые
 

SlavenTyz

Client
Регистрация
30.04.2018
Сообщения
1 085
Благодарностей
29
Баллы
48
Я понимаю, что HtmlElementCollection обращается ко всем элементам, а HtmlElement к конкретному, но в чем изюминка, не понимаю
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
Я понимаю, что HtmlElementCollection обращается ко всем элементам, а HtmlElement к конкретному, но в чем изюминка, не понимаю
Ты перед циклом как-то узнаешь количество элементов, которое ты будешь перебирать в этом цикле?
 

SlavenTyz

Client
Регистрация
30.04.2018
Сообщения
1 085
Благодарностей
29
Баллы
48
Ты перед циклом как-то узнаешь количество элементов, которое ты будешь перебирать в этом цикле?
Да использую HtmlElementCollection и все других плюсов я не вижу
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
Да использую HtmlElementCollection и все других плюсов я не вижу
т.е. ты проделываешь одну и ту же работу дважды по сравнению с тем, если бы ты сразу взял коллекцию и работал с ней
Проделывать в 2 раза меньше работы, на мой взгляд, существенный плюс)
 

SlavenTyz

Client
Регистрация
30.04.2018
Сообщения
1 085
Благодарностей
29
Баллы
48
т.е. ты проделываешь одну и ту же работу дважды по сравнению с тем, если бы ты сразу взял коллекцию и работал с ней
Проделывать в 2 раза меньше работы, на мой взгляд, существенный плюс)
Это понятно, но вопрос в другом я не понимаю чем отличается HtmlElementCollection от HtmlElement при условии что пути XPath одинаковые
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
Это понятно, но вопрос в другом я не понимаю чем отличается HtmlElementCollection от HtmlElement при условии что пути XPath одинаковые
ничем. 1й ищет сразу все элементы. второй только один
 

SlavenTyz

Client
Регистрация
30.04.2018
Сообщения
1 085
Благодарностей
29
Баллы
48
ничем. 1й ищет сразу все элементы. второй только один
То есть у меня может быть разница в путях XPath и по этому вылезла ошибка. У меня вопрос как можно обратиться к 1 или 9 элементу через HtmlElementCollection
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
То есть у меня может быть разница в путях XPath и по этому вылезла ошибка. У меня вопрос как можно обратиться к 1 или 9 элементу через HtmlElementCollection
там вроде есть метод Elements или ElementsAt
По поводу ошибки, я не знаю, что ты делаешь и как
 

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