"Работа" с элементами на экране (ZennoDroid Pro)

Moonwalker

Client
Регистрация
16.03.2016
Сообщения
1 674
Благодарностей
1 266
Баллы
113
Всем привет.
Ну что, настало мое время задавать дурацкие вопросы по Дроиду ))
Взял на год на поиграться (спасибо конкурсу), сваял свой первый "проект" )) В целом - работает. Но пока нестабильно. Разбираемся и учимся дальше (всегда интереснее учиться, когда решаешь собственную практическую задачу) ))

Возник такой вопрос (точнее, даже два):
1. Есть ли возможность проверить наличие определенного элемента в видимой области экрана? Условно, у меня страница Chrome, на ней где-то есть кнопка, но она не всегда на экране, иногда ниже. Соответственно, нужен свайп. Хочется после свайпа, допустим, проверять видимую область экрана на наличие данного элемента.
Проверка "наличия текста" не помогает, поскольку проходится (при этом элемент находится ниже, на экране не видно). Может, просто что-то не так делаю )) Ищу по Source, что бы это ни значило.

2. Есть ли возможность после загрузке страницы как-то просто просвайпать до нужного мне элемента, чтобы он появился на экране?

По сути, оба варианта решают одну и ту же задачу )) Просто разными путями. Интересны оба варианта решения, думаю, пригодятся в дальнейшем.

ps. И да, готовьтесь, вопросов дурацких какое-то время будет много )) Гугл (с поиском по форуму) пока не подсказал, хотя, мне казалось, что это какая-то базовая задача. Наверное, ее решение скрыто в каком-то кубике, который просто пока от меня прячется ))
 
  • Спасибо
Реакции: Dmitriy Ka

t79

Client
Регистрация
29.04.2024
Сообщения
255
Благодарностей
135
Баллы
43
Бро, я конечно не эксперт, сразу скажу ))

но расскажу просто наши мытарсва )))))))) браузер на мобиле, это не хромиум ни разу, как выяснилось )))))

по поиску элемента мы прошли через след круги )

1 - сначала искали через Проверить наличие теста - если нет = спайп, ну или нашли - и это работало, но на прогоне в 1000 проходов, как оказалось это не стабильный метод, иногда видит текст, а иногда нет + к этому на сайтах донорах иногда кнопки вообще картинками))), но самый главный минус - это долго, кубик очень долгий, к примеру, все проверки на закрытие яндекс браузеров занимали 4 секунды - для нас оказалось очень долго
122869

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

работает это хорошо и очень быстро, один раз получил экран и быстро пробежался
122870


но есть один серьезный нюанс - далеко не всегда (особенно после экшенов тача) xml структура есть в наличии - иногда она есть а иногда она и пустая и хз вообще от чего это зависит - в итоге на блоке по работе с ПФ яндекса - сборка потерпела фиаско частично, поскольку целевые элементы находятся не стабильно....

3 начали искать по картинкам, когда xml пустой - и черт побери, это работает, и работает Очень хорошо, но именно для нас это оказалось слишком долго и затратно по ресурсам

вот почти весь наш путь нубов ))))

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

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


к чему мы пришли в итоге ))))

мы знаем разрешения наших трубок - это важно
все страницы мы представили в виде координатной сетки.
рядом с фермой трубок, мы поставили 2 эмулятора задача которых хватать сайт донора, подстраивать разрешение, находить, что надо (через анализ html))) и возвращать координаты дейтвия трубки - типа - 5 свайпов и X Y до кнопки подписаться, а трубка уже работает как тыкалка - это самое быстрое, что лично мы смогли придумать в плане работы именно с браузером

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

вот как то так я попытался ответить на твои вопросы. но реальная трубка - это вообще другое, нежели к чему все привыкли )) но профит на лицо, если честно...
 
Последнее редактирование:
  • Спасибо
Реакции: j2082192

Moonwalker

Client
Регистрация
16.03.2016
Сообщения
1 674
Благодарностей
1 266
Баллы
113
Спасибо за развернутый ответ. Ну, я на эмуляторе (для поиграться взял именно Pro, нет необходимости заморачиваться с телефонами). Поэтому реальные трубки пока в стороне ))
Объемы небольшие совершенно, один раз, условно, в 10-20 минут, плюс я пока в процессе изучения, поэтому никуда не тороплюсь.
У меня почему-то проверку на наличие текста проходит, хотя по факту нужный текст - не в видимой области экрана, до него свайпать надо. Но, видимо, кубиком надо искать не по Source, а по Text (если я правильно понял логику подсказки), я по неопытности не так делал, скорее всего. Надо будет проверить.
То, что свайпа до элемента нет, жаль. Понятно, что Хром здесь - условный браузер, мы с ним работаем как с приложением, но часть задачи надо именно через него делать (ну или любой другой браузер, но раз уж Хром есть, с ним проще), оставшееся уже в самом приложении.
Будем копать дальше. Пока прикольно )))
ps. Причем, в PM все отрабатывает четко, а в ZD - постоянно на каком-то этапе отваливается. Вангую, что в PM я пошагово это делаю, ожидая завершения предыдущего действия, а в ZD оно летит впереди паровоза и, скорее всего, просто не успевает дождаться нужных элементов. Хотя и так уже кучу пауз понаставил. Поэтому и стало интересно, как проверять наличие элемента именно на экране.
 

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
773
Благодарностей
517
Баллы
93
Если работаете с браузером Chrome

Вот так можно получить верстку страницы:
var html = instance.DroidInstance.WebView.EvaluateScript("return document.documentElement.innerHTML");

Если в html нужный элемент есть, то логика свайпа до него такая:
делаем свайп, запускаем проверку на нужный элемент чрез XML, если элемента нет, еще свайп и так до элемента.
 

nice_try

Client
Регистрация
13.03.2024
Сообщения
46
Благодарностей
7
Баллы
8
а цикл в котором каждую итерацию берем хмл, ищем запрос
-выходим по факту нахождения
-делаем свайп плюс возврат в цикл

?
 

nice_try

Client
Регистрация
13.03.2024
Сообщения
46
Благодарностей
7
Баллы
8
а, блин с браузером только... очень бы хотелось реально варианты заполучить без циклосвайпа...


Если работаете с браузером Chrome

Вот так можно получить верстку страницы:
var html = instance.DroidInstance.WebView.EvaluateScript("return document.documentElement.innerHTML");

Если в html нужный элемент есть, то логика свайпа до него такая:
делаем свайп, запускаем проверку на нужный элемент чрез XML, если элемента нет, еще свайп и так до элемента.
 

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