Xpath клик по элементу не работает

Регистрация
19.10.2018
Сообщения
188
Благодарностей
24
Баллы
18
Собственно есть страница для примера
Задача кликнуть на элемент и получить атрибут хоть какой-то.
Есть код:
C#:
string xpath = "//div[@class='like_wrap _like_wall-41108497_1191511']/div/div/a[contains(@class,'_share')]/div[1]";
//div[@class='like_wrap _like_wall-41108497_1191511']/div/div/a[contains(@class,'_share')]/span
Tab tab = instance.MainTab;
HtmlElement he = tab.MainDocument.FindElementByXPath(xpath, 0);
he.Click();
//var clhe = he.GetAttribute("class");
//return clhe;
Не первый не другой (закоменченый) xpath не работают, хотя в анализаторе путей точно верный путь.
Пробовал получить класс, innerHtml, outerHtml элемента he бесполезно возвращает пустое значение.
В c# я еще новичок, осваиваю потихоньку, помогите разобраться ребят, где собака зарыта.
 

backoff

Client
Регистрация
20.04.2015
Сообщения
5 925
Благодарностей
6 389
Баллы
113
путь кривой, не отображается ничего, ты лучше указывай изначально куда кликнуть надо то?
 
  • Спасибо
Реакции: 6585_Лягуша

radv

Client
Регистрация
11.05.2015
Сообщения
3 674
Благодарностей
1 859
Баллы
113
в анализаторе путей точно верный путь.
обращай внимание на атрибуты. Иногда кликнуть надо по родительскому или вложенному элементу. Пробуй разные варианты. И пробуй составить путь без цифр, он может быть динамический.
 
  • Спасибо
Реакции: 6585_Лягуша
Регистрация
19.10.2018
Сообщения
188
Благодарностей
24
Баллы
18
путь кривой, не отображается ничего, ты лучше указывай изначально куда кликнуть надо то?
надо кликнуть на репост записи
обращай внимание на атрибуты. Иногда кликнуть надо по родительскому или вложенному элементу. Пробуй разные варианты. И пробуй составить путь без цифр, он может быть динамический.
Путь без цифр динамический я позже добавлю. Я сейчас просто тустирую на статичном примере, чтобы работало, а потом конечно через переменную добавлю в xpath путь.
61389

Вот тут блок хорошо отображается, там посути три элемента.
61390

61391

подсвечивается нужный элемент.
И так и так пробовал.
61392
 

backoff

Client
Регистрация
20.04.2015
Сообщения
5 925
Благодарностей
6 389
Баллы
113
попробуй так

C#:
(//div[@id='wl_post_actions_wrap']//div[@class='like_button_icon'])[2]
 
Регистрация
19.10.2018
Сообщения
188
Благодарностей
24
Баллы
18
не работает.
добавил в проект вот эту строчку
C#:
project.SendInfoToLog(xpath);
Выдает пустое значение. Хоть какой xpath подставляю, может в этом проблема?
61393


Там логика такая, что он берет айди поста (записи) ищет в ней уже блок репоста и потом клацает по нему.
 

backoff

Client
Регистрация
20.04.2015
Сообщения
5 925
Благодарностей
6 389
Баллы
113
твой сниппет не проверял

у меня работает


C#:
var xpath = "(//div[@id='wl_post_actions_wrap']//div[@class='like_button_icon'])[2]";
 
HtmlElement he = instance.ActiveTab.FindElementByXPath(xpath, 0);
if (he.IsVoid) throw new Exception("не найдено и т.д."); // их всегда надо провер¤ть
he.Click();
 
instance.ActiveTab.FindElementByXPath(xpath, 0).Click();
Там логика такая, что он берет айди поста (записи) ищет в ней уже блок репоста и потом клацает по нему.
сложно
 
  • Спасибо
Реакции: 6585_Лягуша

backoff

Client
Регистрация
20.04.2015
Сообщения
5 925
Благодарностей
6 389
Баллы
113
  • Спасибо
Реакции: 6585_Лягуша
Регистрация
19.10.2018
Сообщения
188
Благодарностей
24
Баллы
18
В логе xpath есть, просто он не показывается так как длинный, при фокусе на поле лога всплывает путь.
Действительно был путь неверный до элемента. Оказалось лишний пробел был в классе в конце класса.
Спасибо за IsVoid с ним гораздо понятнее стало. Добавил проверки, сразу нашел ошибки. Все работает теперь.
 

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