Не работает клик по пути XPath

ArtDir

Client
Регистрация
03.04.2019
Сообщения
48
Реакции
4
Баллы
8
Коллеги, доброго времени!

Написал программу, которая регистрирует аккаунты ВКонтакте. Находит кнопки и элементы по XPath. Когда работаю в ProjectMaker — все проходит нормально. Однако, когда запускаю в Zennoposter — начинаются проблемы.

Внизу окна рандомно появляется подсказка «про использование Cookies», из-за чего клик не попадает на нужную кнопку. Эмуляция мыши (иногда) кликает по подсказке вместо клика по элемету с кнопками:

56772


Закрывать подсказку бесполезно, она появляется на случайной странице и по нескольку раз. Блокировать всплывающие окна — тоже, она все равно отображается.

Кнопку зенка пытается найти вот по этому xpath:

xpath:
Развернуть Свернуть Копировать
//*[text()[contains(., 'Зарегистрироваться') or contains(., 'Sign up')]]

Но, как вы уже поняли, кликает не на нее, а на подсказку про куки.

Скажите, как с этим боретесь?

Прокручивать страницу вниз не помогает. Подсказка аккурат перекрывает нижнюю кнопку регистрации.

Поставить заданный размер окна — плохо, так как ВК заподозрит одинаковые регистрации.

Бьюсь уже целый день, не могу найти стабильное и простое решение.

Помогите, пожалуйста.
 
Скажите, как с этим боретесь?
Делайте проверку на данное окно и закрытие,
а может это возможно решить проще, добавив куку с согласием (или то, где сайт хранит метку, что бы не выводить окно повторно).
 
  • Спасибо
Реакции: ArtDir
там же есть крестик закрытия этого всплывающего окна. сделай кубик который кликает по этому крестике , поставь ему свойство необязательный и раскопируй по всему проекту , прям перед нужными кликами пусть пытается жмякнуть по закрытию.
 
Делайте проверку на данное окно и закрытие,
а может это возможно решить проще, добавив куку с соглавием (или то, где сайт хранит метку, что бы не выводить окно повторно).

Гениально! Поищу, куда сайт записывает!
 
там же есть крестик закрытия этого всплывающего окна. сделай кубик который кликает по этому крестике , поставь ему свойство необязательный и раскопируй по всему проекту , прям перед нужными кликами пусть пытается жмякнуть по закрытию.

Примерно так сейчас это и работает, но это капец как раздувает проект. Хочу избавиться от костылей.
 
Вам эмуляция реального клика человеком нужна или любой вариант клика? Если любой , то у вас не верно указана XPath дорога - т.е. нужно более глубоко указывать дорогу к клику. По крайней мере у меня была подобная проблема. - Как писал выше, составил грамотно Xpath и все заработало - даже в некоторых проектах с эмуляцией клика выходило.
Примерно так сейчас это и работает, но это капец как раздувает проект. Хочу избавиться от костылей.
 
  • Спасибо
Реакции: ArtDir
Тут похоже проблема, что попап может вылезти, когда мышь неспешно движется к координатам элемента.
На C# такое решается проверкой HtmlElement'а по координатам курсора с целевым HtmlElement'ом, а далее доводкой курсора или закрытием окна кук.
 
  • Спасибо
Реакции: ArtDir
Вам эмуляция реального клика человеком нужна или любой вариант клика? Если любой , то у вас не верно указана XPath дорога - т.е. нужно более глубоко указывать дорогу к клику. По крайней мере у меня была подобная проблема. - Как писал выше, составил грамотно Xpath и все заработало - даже в некоторых проектах с эмуляцией клика выходило.

К сожалению, не могу придумать за что там еще зацепиться XPath-ом. Так как классы там меняются в зависимости от разрешения экрана и обновлений ВК. Остаются только текста кнопок.

Может подскажете, как у себя решили проблему и как грамотно вставить Икспас? Да, нужна именно эмуляция реального клика.
 
Тут похоже проблема, что попап может вылезти, когда мышь неспешно движется к координатам элемента.
На C# такое решается проверкой HtmlElement'а по координатам курсора с целевым HtmlElement'ом, а далее доводкой курсора или закрытием окна кук.

Ого! А как это сделать? Не нашел подобного решения.
 

Спасибо! Тут, как я понял, C# ищет по конкретным координатам? Такое ВК может вычислить, если кликать все время в одном и том же месте. Как думаете, можно ли такой код адаптировать под XPath? Чтобы он проверял случайный пиксель на кнопке?
 
Спасибо! Тут, как я понял, C# ищет по конкретным координатам? Такое ВК может вычислить, если кликать все время в одном и том же месте. Как думаете, можно ли такой код адаптировать под XPath? Чтобы он проверял случайный пиксель на кнопке?

Есть у вас возможность скинуть кусок кода, с элементом куда нужно кликать?
 
Последнее редактирование:
Есть у вас возможность скинуть кусок кода, с элементом куда нужно кликать?

Конечно! Логика там супер простая:
1. Первый кубик заходит на m.vk.com
2. Второй кликает по элемету "Зарегистрироваться" или "Sign In"

Вот так я его ищу через XPath:
Код:
Развернуть Свернуть Копировать
//*[text()[contains(., 'Зарегистрироваться') or contains(., 'Sign up')]]

А вот так нужную кнопочку закрывает всплывашка:
56884


Сами кубики:

56885


Как вы уже поняли, по зеленой кнопочке, как раз и нужно кликнуть... Но ее не видно)

Иногда это другая кнопочка, или форма для заполнения. И таких моментов по проекту раз 10.
 
Спасибо! Тут, как я понял, C# ищет по конкретным координатам? Такое ВК может вычислить, если кликать все время в одном и том же месте. Как думаете, можно ли такой код адаптировать под XPath? Чтобы он проверял случайный пиксель на кнопке?
ищет элемент , получает координаты крайнего угла, по координатам пытается получить элемент и сравнивает что получилось. можно использовать просто как проверку, а клик делать любым удобным сбособом.
 
  • Спасибо
Реакции: ArtDir
ищет элемент , получает координаты крайнего угла, по координатам пытается получить элемент и сравнивает что получилось. можно использовать просто как проверку, а клик делать любым удобным сбособом.

Спасибо, попробую. Конечно придется его напихать везде, так как такая история случается раз по 5 на проект... Но изящного решения я пока не нашел(
 
Делайте проверку на данное окно и закрытие,
а может это возможно решить проще, добавив куку с согласием (или то, где сайт хранит метку, что бы не выводить окно повторно).

Кажется я нашел, какая кука записывается при закрытии этого окна. Но не могу найти, как мне ее записать автоматически (средствами zenno). Подскажите, пожалуйста, как записать конкретную куку в браузер?
 
Конечно! Логика там супер простая:
1. Первый кубик заходит на m.vk.com
2. Второй кликает по элемету "Зарегистрироваться" или "Sign In"

Вот так я его ищу через XPath:
Код:
Развернуть Свернуть Копировать
//*[text()[contains(., 'Зарегистрироваться') or contains(., 'Sign up')]]

А вот так нужную кнопочку закрывает всплывашка:
Посмотреть вложение 56884

Сами кубики:

Посмотреть вложение 56885

Как вы уже поняли, по зеленой кнопочке, как раз и нужно кликнуть... Но ее не видно)

Иногда это другая кнопочка, или форма для заполнения. И таких моментов по проекту раз 10.



Попробуйте такой вариант и отпишите:
//div[@class="fi_row"]//a[@class="button wide_button success"]

или

//div[@class="form_item"]//div[@class="fi_row"]//a[@class="button wide_button success"]
 

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