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

ArtDir

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

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

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

56772


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

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

xpath:
//*[text()[contains(., 'Зарегистрироваться') or contains(., 'Sign up')]]
Но, как вы уже поняли, кликает не на нее, а на подсказку про куки.

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

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

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

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

Помогите, пожалуйста.
 

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 518
Благодарностей
3 371
Баллы
113
Скажите, как с этим боретесь?
Делайте проверку на данное окно и закрытие,
а может это возможно решить проще, добавив куку с согласием (или то, где сайт хранит метку, что бы не выводить окно повторно).
 
  • Спасибо
Реакции: ArtDir

Phoenix78

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

ArtDir

Client
Регистрация
03.04.2019
Сообщения
48
Благодарностей
4
Баллы
8
Делайте проверку на данное окно и закрытие,
а может это возможно решить проще, добавив куку с соглавием (или то, где сайт хранит метку, что бы не выводить окно повторно).
Гениально! Поищу, куда сайт записывает!
 

ArtDir

Client
Регистрация
03.04.2019
Сообщения
48
Благодарностей
4
Баллы
8
там же есть крестик закрытия этого всплывающего окна. сделай кубик который кликает по этому крестике , поставь ему свойство необязательный и раскопируй по всему проекту , прям перед нужными кликами пусть пытается жмякнуть по закрытию.
Примерно так сейчас это и работает, но это капец как раздувает проект. Хочу избавиться от костылей.
 

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 526
Благодарностей
1 323
Баллы
113
Вам эмуляция реального клика человеком нужна или любой вариант клика? Если любой , то у вас не верно указана XPath дорога - т.е. нужно более глубоко указывать дорогу к клику. По крайней мере у меня была подобная проблема. - Как писал выше, составил грамотно Xpath и все заработало - даже в некоторых проектах с эмуляцией клика выходило.
Примерно так сейчас это и работает, но это капец как раздувает проект. Хочу избавиться от костылей.
 
  • Спасибо
Реакции: ArtDir

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 518
Благодарностей
3 371
Баллы
113
Тут похоже проблема, что попап может вылезти, когда мышь неспешно движется к координатам элемента.
На C# такое решается проверкой HtmlElement'а по координатам курсора с целевым HtmlElement'ом, а далее доводкой курсора или закрытием окна кук.
 
  • Спасибо
Реакции: ArtDir

ArtDir

Client
Регистрация
03.04.2019
Сообщения
48
Благодарностей
4
Баллы
8
Вам эмуляция реального клика человеком нужна или любой вариант клика? Если любой , то у вас не верно указана XPath дорога - т.е. нужно более глубоко указывать дорогу к клику. По крайней мере у меня была подобная проблема. - Как писал выше, составил грамотно Xpath и все заработало - даже в некоторых проектах с эмуляцией клика выходило.
К сожалению, не могу придумать за что там еще зацепиться XPath-ом. Так как классы там меняются в зависимости от разрешения экрана и обновлений ВК. Остаются только текста кнопок.

Может подскажете, как у себя решили проблему и как грамотно вставить Икспас? Да, нужна именно эмуляция реального клика.
 

ArtDir

Client
Регистрация
03.04.2019
Сообщения
48
Благодарностей
4
Баллы
8
Тут похоже проблема, что попап может вылезти, когда мышь неспешно движется к координатам элемента.
На C# такое решается проверкой HtmlElement'а по координатам курсора с целевым HtmlElement'ом, а далее доводкой курсора или закрытием окна кук.
Ого! А как это сделать? Не нашел подобного решения.
 

ArtDir

Client
Регистрация
03.04.2019
Сообщения
48
Благодарностей
4
Баллы
8
Спасибо! Тут, как я понял, C# ищет по конкретным координатам? Такое ВК может вычислить, если кликать все время в одном и том же месте. Как думаете, можно ли такой код адаптировать под XPath? Чтобы он проверял случайный пиксель на кнопке?
 

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 526
Благодарностей
1 323
Баллы
113
Спасибо! Тут, как я понял, C# ищет по конкретным координатам? Такое ВК может вычислить, если кликать все время в одном и том же месте. Как думаете, можно ли такой код адаптировать под XPath? Чтобы он проверял случайный пиксель на кнопке?
Есть у вас возможность скинуть кусок кода, с элементом куда нужно кликать?
 
Последнее редактирование:

ArtDir

Client
Регистрация
03.04.2019
Сообщения
48
Благодарностей
4
Баллы
8
Есть у вас возможность скинуть кусок кода, с элементом куда нужно кликать?
Конечно! Логика там супер простая:
1. Первый кубик заходит на m.vk.com
2. Второй кликает по элемету "Зарегистрироваться" или "Sign In"

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


Сами кубики:

56885


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

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

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
Спасибо! Тут, как я понял, C# ищет по конкретным координатам? Такое ВК может вычислить, если кликать все время в одном и том же месте. Как думаете, можно ли такой код адаптировать под XPath? Чтобы он проверял случайный пиксель на кнопке?
ищет элемент , получает координаты крайнего угла, по координатам пытается получить элемент и сравнивает что получилось. можно использовать просто как проверку, а клик делать любым удобным сбособом.
 
  • Спасибо
Реакции: ArtDir

ArtDir

Client
Регистрация
03.04.2019
Сообщения
48
Благодарностей
4
Баллы
8
ищет элемент , получает координаты крайнего угла, по координатам пытается получить элемент и сравнивает что получилось. можно использовать просто как проверку, а клик делать любым удобным сбособом.
Спасибо, попробую. Конечно придется его напихать везде, так как такая история случается раз по 5 на проект... Но изящного решения я пока не нашел(
 

ArtDir

Client
Регистрация
03.04.2019
Сообщения
48
Благодарностей
4
Баллы
8
Делайте проверку на данное окно и закрытие,
а может это возможно решить проще, добавив куку с согласием (или то, где сайт хранит метку, что бы не выводить окно повторно).
Кажется я нашел, какая кука записывается при закрытии этого окна. Но не могу найти, как мне ее записать автоматически (средствами zenno). Подскажите, пожалуйста, как записать конкретную куку в браузер?
 

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 526
Благодарностей
1 323
Баллы
113
Конечно! Логика там супер простая:
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"]
 

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