Как получить доступ к элементам веб-страницы с помощью службы специальных возможностей Android - PullRequest
0 голосов
/ 20 июня 2019

Редактировать: теперь я могу получить текстовые значения EditText.Это то, что мне нужно.

Я пытаюсь получить доступ к элементам веб-страницы с помощью службы специальных возможностей Android, но все, что я могу сделать, - это получить URL-адрес, а не какой-либо текст на странице.Действительно ли возможно получить текст от элементов пользовательского интерфейса на веб-странице?

Я попытался получить доступ к корневому узлу с помощью getRootInActiveWindow, а затем рекурсивно пройти по корневому дереву с помощью getChild () и распечатать любой текст, с которым я столкнулся.

Мой рекурсивный метод:

public void getChildrenInfo(AccessibilityNodeInfo info) {
    try {
        if (info == null) {
            logOther("info is null");
            return;
        }
        if (info.getText() != null && info.getText().length() > 0) {
            String nodeText = info.getText().toString();
            log("node has text:",nodeText);
        }
        if(info.getContentDescription() != null){
            log("node content info:",info.getContentDescription().toString());
        }
        //logOther("nodeinfo child count is:", String.valueOf(info.getChildCount()));
        for (int i = 0; i < info.getChildCount(); i++) {
            AccessibilityNodeInfo child = info.getChild(i);
            logOther("got child:", String.valueOf(i));
            String className = "";
            if(child.getClass() != null){
                className = child.getClassName().toString();
                //log("child", String.valueOf(i),"classType is:", className);
            }
            else{
                //log("child", String.valueOf(i),"classType is null");
            }
            if(child != null){
                if(child.getChildCount() > 0){
                    //logOther("Has children. Getting childrenInfo");
                    getChildrenInfo(child);
                }
                else if(child.getText() != null && child.getText().length() > 0){
                    String nodeText = child.getText().toString();
                    log("child has text:",nodeText);
                }
                child.recycle();
            }
        }
    } catch(StackOverflowError ex){
        ex.printStackTrace();
    } catch (Exception ex) {
        ex.printStackTrace();
    }
}
...