Репост поста в ОК

Deisler

Client
Регистрация
26.10.2019
Сообщения
486
Благодарностей
190
Баллы
43
Здравствуйте. Уже почти сутки пытаюсь разобраться в, казалось бы, простом действии. Я опишу свои действия и приложу видео для большей наглядности. Очень прошу помочь разобраться в этом вопросе.

Задача - сделать репост рандомной записи в однокласниках. Для этого нужно совершить первое действие - нажать на элемент репоста под нужной записью. И второе действие - нажать в всплывающем окне "Поделиться сейчас". Казалось бы что все просто. Но я столкнулся с тем что по элементу репост (после нажатия на который появляется всплывающее окно) действие "Click" просто не проходит. В дереве элементов я я перебираю все элементы связанные с этой кнопкой и ни по одному из них действие "Click" не проходит. То есть в логе пишет что элемент найден, что мы на него кликнули, а по факту всплывающее окно не появляется и как следствие на странице не подгружаются элементы из всплывающего окна.
При этом если я в ручную нажму на кнопку репоста и всплывающее окно появится, то действие "Click" из конструктора действий начинает срабатывать....
К описанной ситуации прилагаю видео на котором видны все мои действия https://yadi.sk/i/ij9mx-HtN4aoAA

Исходя из всего этого 2 вопроса:
1. Это баг программы или особенность сайта с которым ведется работа ?
2. Расскажите, пожалуйста, языком, понятным новичку, как с этим работать и выполнить изначальную задачу (репост записи)


P.S. Версия программы 7.1.4
P.P.S. Действие "Click" корректно работает на рядом стоящих элементах (Коментарии и Класс)
P.P.P.S. Задача делать репост не конкретного поста (типо первого в группе), а рандомного.

Заранее спасибо
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113

Deisler

Client
Регистрация
26.10.2019
Сообщения
486
Благодарностей
190
Баллы
43

Вложения

Deisler

Client
Регистрация
26.10.2019
Сообщения
486
Благодарностей
190
Баллы
43

Deisler

Client
Регистрация
26.10.2019
Сообщения
486
Благодарностей
190
Баллы
43

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
у вас в видео , координаты элемента 679,501 в конце видео. и страница промотана ниже. вот он и кликает по заголовку. надо разбираться что за элемент он там нашел. лучше всего посмотреть в DevTols
 
  • Спасибо
Реакции: Deisler

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113

Deisler

Client
Регистрация
26.10.2019
Сообщения
486
Благодарностей
190
Баллы
43
у вас в видео , координаты элемента 679,501 в конце видео. и страница промотана ниже. вот он и кликает по заголовку. надо разбираться что за элемент он там нашел. лучше всего посмотреть в DevTols
Спасибо за подсказку в каком напровлении смотреть, покапаюсь с этим
 

Deisler

Client
Регистрация
26.10.2019
Сообщения
486
Благодарностей
190
Баллы
43
и да... раз уж 7-ку юзаете , то лучше через xpath делать поиск элементов.
Так ведь если я из дерева в конструктор закидываю элемент, он ведь не может при таком раскладе неправильно определяться?!
Xpath ведь более корректно работает уже при написанном кубике, в конструкторе действий это же не имеет значение. Или я не правильно понимаю?
 

n0n3mi1y

Client
Регистрация
08.03.2017
Сообщения
1 237
Благодарностей
573
Баллы
113
Реализуй клик по элементу. Сначала можно получить координаты, потом выполнить клик по ним. На форуме я кидал свой код (который написан кривовато, но РАБОТАЕТ), в нем я реализовывал перетаскивание ползунка, но можно и выдернуть нужные части для простого клика по кнопке.
А вообще переходи на запросы.
 
  • Спасибо
Реакции: Deisler

n0n3mi1y

Client
Регистрация
08.03.2017
Сообщения
1 237
Благодарностей
573
Баллы
113
Так ведь если я из дерева в конструктор закидываю элемент, он ведь не может при таком раскладе неправильно определяться?!
Xpath ведь более корректно работает уже при написанном кубике, в конструкторе действий это же не имеет значение. Или я не правильно понимаю?
Может, если класс элемента динамический.
Или не класс, не имеет значения. Любые динамические элементы = проблема для простого поиска, надо искать уникальный идентификатор
 

Deisler

Client
Регистрация
26.10.2019
Сообщения
486
Благодарностей
190
Баллы
43
у вас в видео , координаты элемента 679,501 в конце видео. и страница промотана ниже. вот он и кликает по заголовку. надо разбираться что за элемент он там нашел. лучше всего посмотреть в DevTols
Это координаты нужной мне кнопки ) Которые определяются правильно. То есть текущие координаты на странице если проскроллить, то координата Y на странице поменяется. Там все правильно https://yadi.sk/i/v0fyMGve4CZq9Q
 

Deisler

Client
Регистрация
26.10.2019
Сообщения
486
Благодарностей
190
Баллы
43
Реализуй клик по элементу. Сначала можно получить координаты, потом выполнить клик по ним. На форуме я кидал свой код (который написан кривовато, но РАБОТАЕТ), в нем я реализовывал перетаскивание ползунка, но можно и выдернуть нужные части для простого клика по кнопке.
А вообще переходи на запросы.
я уже и сам думал пробовать реализовать это через клик по координатам. Но блин... что-то мне подсказывает что это способ через Ж... Правой рукой левое ухо чешим... Крайне странно что на элемент просто не проходит клик.... Вот и хотел бы понять это баг или это надо как-то особенно обрабатывать... Как альтернативный вариант то да, по координатам

Под запросами имеете в виду Post\Get ?
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
Так ведь если я из дерева в конструктор закидываю элемент, он ведь не может при таком раскладе неправильно определяться?!
Xpath ведь более корректно работает уже при написанном кубике, в конструкторе действий это же не имеет значение. Или я не правильно понимаю?
основная ошибка , это вера в мифический автоматический конструктор. конечно если элемент уникальный, то может и правильно найдет... но тут то явно не уникальный элемент, да еще их несколько.
клик то проходит... вот только непонятно что он там на определял этот конструктор . а Xpath работает вообще не зависимо от написанного кубика. он просто работает и не зависит ни от чего :-)
вот помог бы с xpath, да нет у меня аккаунта в ОД.
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
А вообще переходи на запросы.
улыбнуло :-) человек элемент на визуальной странице найти не может, а уже запросы :-) не надо торопить события, и до запросов дойдет потихоньку.
 

Deisler

Client
Регистрация
26.10.2019
Сообщения
486
Благодарностей
190
Баллы
43
Может, если класс элемента динамический.
Или не класс, не имеет значения. Любые динамические элементы = проблема для простого поиска, надо искать уникальный идентификатор
Уникальное значение всех элементов Репост на странице я нашел. ищет их правильно, но, блин, клики тупо не проходят ))) Такое впечатление что я не понимаю чего-то что лежит на поверхности.

Хочу понять как реализовывать это правильно... если знатоки не подскажут, то буду через координаты )
 

Вложения

n0n3mi1y

Client
Регистрация
08.03.2017
Сообщения
1 237
Благодарностей
573
Баллы
113
улыбнуло :-) человек элемент на визуальной странице найти не может, а уже запросы :-) не надо торопить события, и до запросов дойдет потихоньку.
На самом деле, с соцсетями проще разобрать post/get, чем ебаться с элементами.. Но это не на все соцсети распространяется)
 

n0n3mi1y

Client
Регистрация
08.03.2017
Сообщения
1 237
Благодарностей
573
Баллы
113
Уникальное значение всех элементов Репост на странице я нашел. ищет их правильно, но, блин, клики тупо не проходят ))) Такое впечатление что я не понимаю чего-то что лежит на поверхности.

Хочу понять как реализовывать это правильно... если знатоки не подскажут, то буду через координаты )
При нажатии на "тестировать" что происходит?
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
скорее всего проблема тут
56658

скорее всего эти элементы находятся в каком нибудь фрейме и кубик клика считывает эти координаты относительно фрейма, а должен получать координаты относительно страницы.
как выход , не использовать кубик , а делать клик через снипет C#, где будет прописано получение верных координат.
 

Deisler

Client
Регистрация
26.10.2019
Сообщения
486
Благодарностей
190
Баллы
43

n0n3mi1y

Client
Регистрация
08.03.2017
Сообщения
1 237
Благодарностей
573
Баллы
113
скорее всего проблема тут
Посмотреть вложение 56658
скорее всего эти элементы находятся в каком нибудь фрейме и кубик клика считывает эти координаты относительно фрейма, а должен получать координаты относительно страницы.
как выход , не использовать кубик , а делать клик через снипет C#, где будет прописано получение верных координат.
+ к этому можно осуществить поиск даже по тексту поста
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
попробуй выполнить этот код. и попробуй подставить разные значения где 1 у меня. ну там 0,1,2,3 и тд.
C#:
var el = instance.ActiveTab.FindElementByXPath("//button[@data-type='RESHARE']",1);
instance.ActiveTab.FullEmulationMouseMoveToHtmlElement(el);
 
  • Спасибо
Реакции: Deisler

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
прикол, давно не пользовался кубиками зенки. щас ради интереса вставил xpath и... не нашел элемент :-) а на c# сразу находит и двигает крысу как надо... ну как ... через баги конечно :-) сначала начал скролить вниз, постов 30 наверно пролистал, потом опомнился и начал листать верх и кликнул по первому элементу... это жесть. неужто за все это время нельзя сделать нормальный рабочий метод для мышки ?
 

qwerty123

Client
Регистрация
26.02.2019
Сообщения
98
Благодарностей
23
Баллы
18
сначала начал скролить вниз, постов 30 наверно пролистал, потом опомнился и начал листать верх и кликнул по первому элементу...
ха ) такое же наблюдал когда при регистрации нужно заполнить дату месяц и год рождения из выпадающего меню .. такая же карусель туда сюда обратно :-)
 

Deisler

Client
Регистрация
26.10.2019
Сообщения
486
Благодарностей
190
Баллы
43
скорее всего проблема тут
Посмотреть вложение 56658
скорее всего эти элементы находятся в каком нибудь фрейме и кубик клика считывает эти координаты относительно фрейма, а должен получать координаты относительно страницы.
как выход , не использовать кубик , а делать клик через снипет C#, где будет прописано получение верных координат.
+ к этому можно осуществить поиск даже по тексту поста
Оказывается дело действительно в полной эмуляции мыши. Просто в конструкторе действий, при нажатии на тест курсор появляется в месте где он был последний раз и не срабатывает как нужно, а если добавить этот кубик в проект, то он работает уже корректно https://yadi.sk/i/hqwcHmSD61_gEw

Я изначально (когда создавал тему) работал без полной эмуляции мыши, просто с максимальным качеством и нажатие не работало как в конструкторе действий, так из проекта. А после того как включил полную эмуляцию мыши, в проект я уже не добавлял, думая что отрабатывает действие так же как и в конструкторе действий.

Спасибо вам за то что помогли мне.

Остается теперь понять как полную эмуляцию мыши включать перед тем как я собрался делать репост и отключать после )))

На самом деле, с соцсетями проще разобрать post/get, чем ебаться с элементами.. Но это не на все соцсети распространяется)
Я по запросам смотрел обучение, но пока без них хочу во всем разобраться, а потом и до них дойду
 

Deisler

Client
Регистрация
26.10.2019
Сообщения
486
Благодарностей
190
Баллы
43
прикол, давно не пользовался кубиками зенки. щас ради интереса вставил xpath и... не нашел элемент :-) а на c# сразу находит и двигает крысу как надо... ну как ... через баги конечно :-) сначала начал скролить вниз, постов 30 наверно пролистал, потом опомнился и начал листать верх и кликнул по первому элементу... это жесть. неужто за все это время нельзя сделать нормальный рабочий метод для мышки ?
Думаю с подобной эмуляцией мыши у новичков и возникает куча вопросов и нежелание использовать эмуляцию без острой необходимости )
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
Думаю с подобной эмуляцией мыши у новичков и возникает куча вопросов и нежелание использовать эмуляцию без острой необходимости )
я больше скажу. с такой реализацией мыши, зенка на хроме вообще не работоспособна. из за этой кривоты шаблон в любой момент может поймать бесконечный цикл подобных каруселей туда-сюда, крыса в легкую может зависнуть. как щас люди работают с этими методами из коробки , вот ума не приложу. не зря же столько сообщений о зависших инстанстов.
 

Deisler

Client
Регистрация
26.10.2019
Сообщения
486
Благодарностей
190
Баллы
43

Deisler

Client
Регистрация
26.10.2019
Сообщения
486
Благодарностей
190
Баллы
43
я больше скажу. с такой реализацией мыши, зенка на хроме вообще не работоспособна. из за этой кривоты шаблон в любой момент может поймать бесконечный цикл подобных каруселей туда-сюда, крыса в легкую может зависнуть. как щас люди работают с этими методами из коробки , вот ума не приложу. не зря же столько сообщений о зависших инстанстов.
Именно поэтому эмуляция мыши у меня и отключена )
 

Deisler

Client
Регистрация
26.10.2019
Сообщения
486
Благодарностей
190
Баллы
43
Подведу итог для тех у кого могут возникнуть подобные трудности (не проходит клик по видимому элементу на странице)

Решение 1.
Включить Полную эмуляцию мыши и прописать клик по нужному элементу. При этом в конструкторе действий клик работать не будет. Он будет корректно работать только если добавить кубик в программу

Решение 2. Лучшее решение
Использовать кубик C# в котором через XPath будет определяться искомый элемент. Вместо 1 подставляется номер нужного вам элемента (0,1,2,3...). Далее эмулируется движение мышки до нужного элемента и производится по нему клик. Можно движение мышки убрать и отрабатывать только клик.



C#:
var el = instance.ActiveTab.FindElementByXPath("//button[@data-type='RESHARE']",1);
instance.ActiveTab.FullEmulationMouseMoveToHtmlElement(el);
instance.ActiveTab.FullEmulationMouseClick("el", "click");
 
  • Спасибо
Реакции: n0n3mi1y

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