Как определить идентификатор элемента в Android? - PullRequest
0 голосов
/ 02 мая 2019

Я занимаюсь исследовательским проектом, который включает в себя автоматизацию Android. Требуется автоматизировать шаги, которые записываются, пока пользователь нажимает на экран.

Я потратил целых 2 дня, чтобы найти правильный способ идентифицировать постучавший элемент на экране, хотя со стороны ПК (на самом устройстве тоже все в порядке).

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

Может кто-нибудь предложить мне способ выполнения моего требования. Не нужно образец кода. ищу идею о том, как реализовать это требование.

Спасибо

Ответы [ 2 ]

0 голосов
/ 03 мая 2019

Для записи ваших событий вам нужно использовать Appium (Android + iOS). В качестве шагов вы можете попробовать библиотеку cucumber . Вы найдете все, что вам нужно на YouTube.

0 голосов
/ 02 мая 2019

Вот подход, который вам поможет.

1) Получить все элементы в документе

2) Добавить пользовательский прослушиватель событий для каждого шага

3) Отслеживание касания с прослушивателем событий

Вот пример кода, как я это сделал в одном из моих аддонов Chrome.

this.AddEventListeners = function()
{
    var document = window.document;
    var elements = this.GetAllElements(document.body);

    for (var i = 0; i < elements.length; i++)   {
        // not sure if it's onTouchEvent event or something else (update the event accordingly in the below line)
        elements[i].addEventListener("onTouchEvent", customTapEvent, false);
    }   
    this.haveEventListeners = true;
}

Метод GetAllElements:

this.GetAllElements = function(element)
{
    var elements = new Array();

    if (element && element.hasChildNodes()) {
        elements.push(element);

        var childs = element.childNodes;

        for (var i = 0; i < childs.length; i++) {
            if (childs[i].hasChildNodes()) {
                elements = elements.concat(this.GetAllElements(childs[i]));
            }
            else if (childs[i].nodeType == 1) {
                elements.push(childs[i]);
            }
        }
    }

    return elements;
}

Запишите логику в методе customTapEvent.

...