Клик по елементу

MPGVR90

Client
Регистрация
15.10.2012
Сообщения
119
Благодарностей
17
Баллы
18
Доброго времени суток. Прошу помощи знатоков, для меня очень важный вопрос. Есть соц. сеть https://www.linkedin.com
Я сделал скрипт который бегает по страничка друзей и кликает по плюсам.
Если я ставил плюс раньше, то при повторном плюсе он снимается

Но проблема в том что Zenno не видит нажат плюс или нет и жмет по всех, а нужно лишь по тем что я еще не нажимал. Если навести курсор на плюс который еще не нажимался, то выйдет надпись "подтвердить", а если на тот что уже нажал "удалить подтверждения" но я их не могу их зацепить в фокус и на проверку. Помогите чем сможете..

Вот екшн клика.
 

samsonnn

Client
Регистрация
02.06.2015
Сообщения
1 668
Благодарностей
1 342
Баллы
113
Я на ютубе с нажатием на "ПОДПИСАТЬСЯ" когда то боролся, была подобная проблема, что могу посоветовать? Вам надо сравнить код, до нажатия и после нажатия, они разные 100% Зацепится там будет за что. Вы через дерево элементов отследите действие, и по этому действию в коде странице ищите. Найдете, скопируйте в текстовик, потом нажмите на плюс и повторите все с кодом. Потом в текстовике когда у вас будет код, до нажатия и после нажатия, сравнивайте. Когда доберетесь до отличия этих кодов, берите его в конструктор регулярных выражений, и делайте регулярку. За тем парсим это отличие регуляркой, и после уже, у себя в шаблоне в экшене IF делайте проверку нажат плюс или нет=)
 
Последнее редактирование:
  • Спасибо
Реакции: MPGVR90 и rostonix

MPGVR90

Client
Регистрация
15.10.2012
Сообщения
119
Благодарностей
17
Баллы
18
Спасибо за ответ, только такой вариант больше подходит, если элемент на странице один, а у нас каждый раз разное количество, в случае на картинке их аж 10. Я уже думал в таком русле: парсить спаны с количеством всех голосов, на примере с картинкой выйдет 1 1 1, потом кинуть их в список, т.к. в переменную много строк нельзя кидать, потом вывести их сумму и кинуть в переменную var1, нажать на кнопку +, снова пропарсить, вывести сумму и снова в переменную var2. Сравнить две переменные (var1<var2), если больше то кликаем на второй +, если меньше - опять кликаем. Только как вывести сумму чисел в списке и положить в переменную?)
 

samsonnn

Client
Регистрация
02.06.2015
Сообщения
1 668
Благодарностей
1 342
Баллы
113
Ну я бы для себя сделал так: 1) узнал бы какое максимальное количество плюсов бывает вообще на странице. 2) Посмотрел бы какой код, до и после нажатия на каждый плюс. 3) Если все разные, то делал бы для каждого плюса так, как я описал выше. 4) Да по любому они все разные должны быть, код должен отличатся в любом случае в каждом плюсе, исходя из этого, одинакового кода в плюсах быть не может. Разве что придется усидчиво и усердно посидеть и поискать=) Как по мне тут даже списки не нужны, можно каждый уникальный код для каждого плюса, парсить в переменную и за тем сравнивать, то есть построить цепочку. Если спарсеный код, равняется тому что мы написали, то переходим к следующему (то есть плюс уже нажат) и снова проверка и так далее, а если не ровняется, то жмякаем на плюсик, и переходим к следующему для сравнения и проверки и так далее до последнего плюсика, по ошибке в экшене IF То есть, по зеленой жмем, а по красной переходим к следующему так сказать плюсу (парсим и сравниваем) А уже в конце в последнем экшене IF переходим в следующую анкету для нажатия новых плюсов=) Ну не знаю, лично мне было бы удобней, именно этим способом, может вам по другому луче, как говорится: Хозяин барин=)
 
Последнее редактирование:

MPGVR90

Client
Регистрация
15.10.2012
Сообщения
119
Благодарностей
17
Баллы
18
Так дело в том, что после нажатия из того за что можно зацепиться меняется только span который я парсить собрался, уже сравнивал два кода в разных состояниях через сервис сравнения. Обертка, то есть классы и контейнеры для плюсов одинаковые. А работает вся эта фигня на JS
 

svaminar

Client
Регистрация
21.08.2013
Сообщения
834
Благодарностей
379
Баллы
63
может искать в 2 этапы
сначала берем и регексом ищем блоки с элементами.
на скрине 10 блоков.
Дальше по номеру совпадения берем 0 блок проверяем текущее состояния. если оно нам подходит то ок, а если нет то меняем.
И так в цикле перебираем все 10 блоков.
При чем у меня намного стабильней работает вариант искать блок в всем масыве данных и брать по номеру совпадения регеска, чем ложить все в список и оттуда дальше брать. Со списком глючило часто
 
Регистрация
09.11.2015
Сообщения
264
Благодарностей
10
Баллы
18
Я на ютубе с нажатием на "ПОДПИСАТЬСЯ" когда то боролся, была подобная проблема, что могу посоветовать? Вам надо сравнить код, до нажатия и после нажатия, они разные 100% Зацепится там будет за что. Вы через дерево элементов отследите действие, и по этому действию в коде странице ищите. Найдете, скопируйте в текстовик, потом нажмите на плюс и повторите все с кодом. Потом в текстовике когда у вас будет код, до нажатия и после нажатия, сравнивайте. Когда доберетесь до отличия этих кодов, берите его в конструктор регулярных выражений, и делайте регулярку. За тем парсим это отличие регуляркой, и после уже, у себя в шаблоне в экшене IF делайте проверку нажат плюс или нет=)
пытаюсь твоим способом определить за что можно зацепится у кнопки подписаться в ютубе.При нажатой кнопке в HTML есть атрибут " data-subscription-id", паршу его регуляркой, добавляю этот кусок в логику, все работает отлично пока не перезагрузишь канал. После перезагрузки логика срабатывает с ошибкой.
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 625
Благодарностей
4 611
Баллы
113
но я их не могу их зацепить в фокус и на проверку.
онмаусмув и подобные события проверялись? А вообще, я бы хотел посмотреть outerhtml до и после плюса.
 

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