Помогите сделать ТАЧ на выпадающее меню

backoff

Client
Регистрация
20.04.2015
Сообщения
5 933
Благодарностей
6 389
Баллы
113
куку, проблемка, не могу сделать тач по элементу
на странице - https://direct.yandex.ru/wizard/welcome/ надо регнуться
имеем

114446

xpath все находит: //select//option[contains(text(), 'Физическое лицо')]

делаю тач сначала на выбор меню, потом на то что надо, но тача не происходит, элемент находит, но тишина.
попробовал через координаты, руками когда вводишь, тач происходит, но там как бы меню не находится

114448

попытался сделать поиск координат по элементу, не находит, выдает координаты 0 и 0

короче говоря в тупике
делать через эмуляцию клавы не варик, так как моб версия типа

есть мысли?
 

Ахилес

Client
Регистрация
11.11.2020
Сообщения
930
Благодарностей
378
Баллы
63

backoff

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

Ахилес

Client
Регистрация
11.11.2020
Сообщения
930
Благодарностей
378
Баллы
63
тач делается на десктопе?
ну я по бырому пробнул в браузере с которого читаю форум. тут у меня есть авторизационный яндекс аккаунт.
в зенке надо заходить, генерить мобильный профиль, логиниться, пароль где то далеко записан, телефон надо подтвердить... бррр... ну нафиг.

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

backoff

Client
Регистрация
20.04.2015
Сообщения
5 933
Благодарностей
6 389
Баллы
113
хуже воровства - это простота... знаешь такую поговорку? лучше не пиши ничего вообще
у разработчика есть кнопочка/расширение для браузера, чтоб посмотреть в мобильной версии
 

Ахилес

Client
Регистрация
11.11.2020
Сообщения
930
Благодарностей
378
Баллы
63
у разработчика есть кнопочка/расширение для браузера, чтоб посмотреть в мобильной версии
то есть как работает тач ты проверяешь в браузере, включая верстку мобильной версии... ну ясненько, понятненько... дальше давай самостоятельно.

лучше не пиши ничего вообще
как скажешь, отправлю тебя в бан, что бы больше никогда не видеть тебя :ap:
 

backoff

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

radv

Client
Регистрация
11.05.2015
Сообщения
3 708
Благодарностей
1 888
Баллы
113

backoff

Client
Регистрация
20.04.2015
Сообщения
5 933
Благодарностей
6 389
Баллы
113
Попробуйте в обычном браузере, потом в браузере зенки.
да, пробовал расширение это, составило тоже самое что и я
114456

в зенке элемент не исследуется, даже за курсором не следит
114455
 

radv

Client
Регистрация
11.05.2015
Сообщения
3 708
Благодарностей
1 888
Баллы
113
да, пробовал расширение это, составило тоже самое что и я
Пробовать найти текст в хтмл через обычный поиск и потом уже смотреть в каком блоке он находится. и изменить xpath в ручную
 

backoff

Client
Регистрация
20.04.2015
Сообщения
5 933
Благодарностей
6 389
Баллы
113
Пробовать найти текст в хтмл через обычный поиск и потом уже смотреть в каком блоке он находится.
все правильно находит, как и через просмотр кода ((
 

radv

Client
Регистрация
11.05.2015
Сообщения
3 708
Благодарностей
1 888
Баллы
113
все правильно находит, как и через просмотр кода ((
иногда значения подтягиваются скриптами. и кликать надо в место вызова скрипта или куда то еще, а не в место где текст находится.
Сначала кликнуть на поле списка, а потом уже смотреть куда варианты подгрузились. Сранить хтмл до открытия списка и после.
 

backoff

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

radv

Client
Регистрация
11.05.2015
Сообщения
3 708
Благодарностей
1 888
Баллы
113
Попробуй этот
//*[contains(text(), 'предприниматель')]/ancestor::li
или этот
//*[contains(text(), 'предприниматель')]/parent::div/parent::li
или этот (Физическое лицо РФ)
//li[@data-value = "physical"]

Тебе надо выбирать li (элемент списка)
114463
 
Последнее редактирование:

backoff

Client
Регистрация
20.04.2015
Сообщения
5 933
Благодарностей
6 389
Баллы
113
Попробуй этот
//*[contains(text(), 'предприниматель')]/ancestor::li
или этот
//*[contains(text(), 'предприниматель')]/parent::div/parent::li
или этот (Физическое лицо РФ)
//li[@data-value = "physical"]
зенка ни одного не нашла
 

radv

Client
Регистрация
11.05.2015
Сообщения
3 708
Благодарностей
1 888
Баллы
113
зенка ни одного не нашла
Ну смотри какой у нее код создается. Разные браузеры могут по разному код формировать. Смысл в том, чтобы найти элемент списка с атрибутами на примере li и нажать на элемент списка, а не на текст в span.

Попробуй поменять браузер в зенке.
Как видишь у меня в коде есть все.

Попробуй с обычном браузере, потом в зенке. Для мобильной версии могут быть другие теги.

Еще один вариант
//*[contains(., 'предприниматель')]/parent::div/parent::li

Смотри какие родительские теги у span с нужным текстом и измени под себя.
 
Последнее редактирование:

backoff

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

<li> тут вообще нет ) в меню
немного разбил на группы

C#:
<li class="rmp-menu__item rmp-menu__item_padded" role="option" aria-selected="false" data-value="796058091" data-label="+7990*****36" data-testid="FormInputWithSuggest.Suggest.Menu.796058091"><div class="rmp-menu__item-label"><span>+7990*****36</span></div></li>


</ul></div></div></div><button class="rmp-button rmp-button_size_M rmp-button_color_normal rmp-email-and-phone-chooser__phone-submit" title="Привязать другой номер"><span class="rmp-button__label">Привязать другой номер</span></button></div></div></div><div class="rmp-section-welcome__section"><div class="rmp-tin-type-select"><h4 class="rmp-tin-type-select__subtitle">Укажите данные рекламодателя

<button type="button" data-testid="ButtonHelp" class="dc-ClickableIcon dc-ClickableIcon_color_gray dc-ClickableIcon_role_supplementary rmp-button-help" style="width: 24px; height: 24px;"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" class="dc-Icon dc-Icon_role_supplementary" focusable="false" aria-hidden="true"><path d="M0 8a8 8 0 1 0 16 0A8 8 0 0 0 0 8Zm14 0A6 6 0 1 1 2 8a6 6 0 0 1 12 0ZM5.178 6.096c0-1.656 1.368-2.664 3.096-2.664 1.704 0 2.976 1.008 2.976 2.496v.048c0 1.416-.912 1.992-1.764 2.364l-.216.096c-.288.132-.384.288-.384.636 0 .172-.14.312-.312.312h-.84a.432.432 0 0 1-.432-.432c0-.816.288-1.332 1.044-1.668l.216-.096C9.282 6.864 9.666 6.6 9.666 6c0-.648-.552-1.08-1.392-1.08-.864 0-1.512.432-1.512 1.248 0 .16-.129.288-.288.288h-.936a.36.36 0 0 1-.36-.36Zm2.916 3.792c-.648 0-1.14.468-1.14 1.14 0 .672.492 1.14 1.14 1.14.648 0 1.14-.468 1.14-1.14 0-.672-.492-1.14-1.14-1.14Z" fill="currentColor"></path></svg></button></h4><div class="rmp-select rmp-select_size_M rmp-select_color_normal rmp-tin-type-select__select"><span class="rmp-select__arrow"><svg class="rmp-select__arrow-icon" width="24" height="24" fill="currentColor"><path d="m12 14.6 6.3-6.3a1 1 0 1 1 1.4 1.4l-6.6 6.6a1.5 1.5 0 0 1-2.2 0L4.3 9.7a1 1 0 0 1 1.4-1.4l6.3 6.3z"></path></svg></span>


<select class="rmp-select__select" id="rmp-tin-type-select__select" data-testid="TinTypeSelect.Select"><option class="rmp-select__option" value="legal" data-testid="TinTypeSelect.option.legal">Юридическое лицо (РФ)</option><option class="rmp-select__option" value="physical" data-testid="TinTypeSelect.option.physical">Физическое лицо (РФ)</option><option class="rmp-select__option" value="individual" data-testid="TinTypeSelect.option.individual">Индивидуальный предприниматель (РФ)</option><option class="rmp-select__option" value="foreign_legal" data-testid="TinTypeSelect.option.foreign_legal">Иностранное юридическое лицо</option><option class="rmp-select__option" value="foreign_physical" data-testid="TinTypeSelect.option.foreign_physical">Иностранное физическое лицо</option><option class="rmp-select__option" value="not_selected" data-testid="TinTypeSelect.option.not_selected">Не&nbsp;выбрано</option></select></div></div><div class="rmp-tin-input" data-testid="TinInput"><h4 class="rmp-tin-input__subtitle">Введите ИНН<button type="button" data-testid="ButtonHelp" class="dc-ClickableIcon dc-ClickableIcon_color_gray dc-ClickableIcon_role_supplementary rmp-button-help" style="width: 24px; height: 24px;"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" class="dc-Icon dc-Icon_role_supplementary" focusable="false" aria-hidden="true"><path d="M0 8a8 8 0 1 0 16 0A8 8 0 0 0 0 8Zm14 0A6 6 0 1 1 2 8a6 6 0 0 1 12 0ZM5.178 6.096c0-1.656 1.368-2.664 3.096-2.664 1.704 0 2.976 1.008 2.976 2.496v.048c0 1.416-.912 1.992-1.764 2.364l-.216.096c-.288.132-.384.288-.384.636 0 .172-.14.312-.312.312h-.84a.432.432 0 0 1-.432-.432c0-.816.288-1.332 1.044-1.668l.216-.096C9.282 6.864 9.666 6.6 9.666 6c0-.648-.552-1.08-1.392-1.08-.864 0-1.512.432-1.512 1.248 0 .16-.129.288-.288.288h-.936a.36.36 0 0 1-.36-.36Zm2.916 3.792c-.648 0-1.14.468-1.14 1.14 0 .672.492 1.14 1.14 1.14.648 0 1.14-.468 1.14-1.14 0-.672-.492-1.14-1.14-1.14Z" fill="currentColor"></path></svg></button></h4><div class="rmp-form-input rmp-form-input_size_M rmp-tin-input__input"><input class="rmp-form-input__input" id="rmp-tin-input__input" autocomplete="off" placeholder="" data-testid="TinInput.input" type="text" value=""><span class="rmp-form-input-icon rmp-form-input__clear" aria-hidden="true" data-testid="FormInput.clear"><svg class="rmp-form-input-icon__icon" width="16" height="16" fill="currentColor"><path fill-rule="evenodd" d="M1.8 1.8a1 1 0 0 0 0 1.4L6.6 8l-4.8 4.8a1 1 0 0 0 1.4 1.4L8 9.4l4.8 4.8a1 1 0 0 0 1.4-1.4L9.4 8l4.8-4.8a1 1 0 0 0-1.4-1.4L8 6.6 3.2 1.8a1 1 0 0 0-1.4 0z" clip-rule="evenodd"></path></svg></span></div></div></div><div class="rmp-section-welcome__section"><h4 class="rmp-section-welcome__subtitle">Юридические условия</h4><div class="rmp-form-checkbox rmp-section-welcome__oferta"><input type="checkbox" id="data-process-accept" data-testid="undefined.FormCheckbox.input"><label class="rmp-form-checkbox__label" for="data-process-accept" data-testid="undefined.Checkbox.label"><div class="rmp-form-checkbox__label-check"></div><div>Я&nbsp;принимаю условия <a role="link" tabindex="0" target="_blank" rel="nofollow noopener" href="//yandex.ru/legal/direct_dpa/" class="rmp-link rmp-link_color_blue rmp-link-external">Договора об&nbsp;обработке данных при рекламе мобильных приложений</a> и&nbsp;<a role="link" tabindex="0" target="_blank" rel="nofollow noopener" href="//yandex.ru/legal/oferta_direct/?lang=ru" class="rmp-link rmp-link_color_blue rmp-link-external">Оферты на&nbsp;оказание услуг «Яндекс.Директ»</a></div></label></div></div></div><button data-testid="WelcomeForm.SubmitButton" class="rmp-button rmp-button_size_M rmp-button_color_action rmp-button_disabled rmp-section-welcome__start" title="Зарегистрироваться"><span class="rmp-button__label">Зарегистрироваться</span></button></div><div class="rmp-page-footer rmp-page__footer" data-testid="PageFooter"><ul class="rmp-page-footer__links">
 

radv

Client
Регистрация
11.05.2015
Сообщения
3 708
Благодарностей
1 888
Баллы
113
вычленил код который генерится
В каком браузере? Пробовал изменить браузер? В обычном браузере пробовал?
Как вариант, можно в зенке получать координаты элемента, и потом их использовать для клика. Пробовать разные типы эмуляции.

В твоем случае вместо li будет option/ Попробуй разные атрибуты.
114464

Ну и перезапусти проджект, может он глючит
 

backoff

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

Moonwalker

Client
Регистрация
16.03.2016
Сообщения
1 410
Благодарностей
999
Баллы
113
Не исключено, что проще будет взять высоту получаемого выпадающего списка, разделить на 5 частей, и тупо кликнуть по 2/5 (если нужное значение всегда второе).
 
  • Спасибо
Реакции: Alexbrush

radv

Client
Регистрация
11.05.2015
Сообщения
3 708
Благодарностей
1 888
Баллы
113

backoff

Client
Регистрация
20.04.2015
Сообщения
5 933
Благодарностей
6 389
Баллы
113
ты не ответил на мои вопросы ))
в мобильной версии нет нигде <li>
смотрю в хроме обычном и хромиуме в зенке, другие браузеры не рассматриваю, так как регается все на хромиуме
 

radv

Client
Регистрация
11.05.2015
Сообщения
3 708
Благодарностей
1 888
Баллы
113
в мобильной версии нет нигде <li>
смотрю в хроме обычном и хромиуме в зенке, другие браузеры не рассматриваю, так как регается все на хромиуме
в твоем случае option (я же писал выше)
Ну и надо разные варианты клика пробовать с разными вариантами эмуляции.

Может даже попробовать эмуляцию мыши разные варианты подведения курсора к элементу и нажатия левой кнопки мышки.
 

Alexbrush

Client
Регистрация
20.11.2020
Сообщения
149
Благодарностей
122
Баллы
43
Однажды при работе с GMB и добавлением товаров я тоже мучался с кликом по элементу из выпадашки.
В итоге нагородил вот такую конструкцию.

Клик на поле самого селекта, чтобы оно стало активным, клик на стрелочку чтобы список выпал и после уже клик на нужное поле с текстом. а т.к. срабатывало через раз, я нагородил 5 повторных попыток для того, чтобы работало безтказно.

114470
 
Последнее редактирование:

Moonwalker

Client
Регистрация
16.03.2016
Сообщения
1 410
Благодарностей
999
Баллы
113
в твоем случае option (я же писал выше)
Не, он в коде есть, но не кликается на него (пути точно правильные) )) Ощущение, что это типа классического "установить дату при реге mail.ru", там тоже вечная проблема с выпадающими списками была у многих, помню, куча тем на форуме ))
 

backoff

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

Alexbrush

Client
Регистрация
20.11.2020
Сообщения
149
Благодарностей
122
Баллы
43
Не, он в коде есть, но не кликается на него (пути точно правильные) )) Ощущение, что это типа классического "установить дату при реге mail.ru", там тоже вечная проблема с выпадающими списками была у многих, помню, куча тем на форуме ))
Мой пример выше решился похожим образом как с датами в mail.ru - активируешь селект, открываешь выпадаешь и тыкаешь пока не тыкнется))
 

backoff

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

Moonwalker

Client
Регистрация
16.03.2016
Сообщения
1 410
Благодарностей
999
Баллы
113
Если совсем "на скорую", после раскрытия списка у меня сработал вот такой вариант:

C#:
//Форма
HtmlElement he = instance.ActiveTab.GetDocumentByAddress("0").FindElementByXPath("//select[@class='rmp-select__select']", 0);
if (he.IsVoid) return -1;

//Координаты
string left = he.GetAttribute("leftinbrowser");
string top = he.GetAttribute("topinbrowser");

//Сдвиг
int left_new = int.Parse(left) + 40;
int top_new = int.Parse(top) - 68;

//Клик
instance.ActiveTab.Touch.LongTouch(Global.SpecialMath.NormalDistribution(6, 1, left_new, left_new), Global.SpecialMath.NormalDistribution(6, 1, top_new, top_new));
Там надо поразбираться с высчитыванием сдвига, сейчас просто убегаю, смотреть некогда (тупо вбил числа). Но я бы смотрел исходя из высоты/ширины элементов, высчитал точнее и немного рандомизировал. Надо просто понять, каких именно элементов размеры брать )) Думаю, найдешь ;-)

ps. Да, возможно, на другом профиле будет промах, поэтому и надо смотреть варианты высчитывания точки для клика.
 
  • Спасибо
Реакции: backoff

radv

Client
Регистрация
11.05.2015
Сообщения
3 708
Благодарностей
1 888
Баллы
113
Помню как то была проблема с кликами, которая решилась через перебор вариантов эмуляции кликов или эмуляции мыши с курсором.
 

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