在某些版本手机中通过UIAutomatorViewer工具无法获取手机屏幕元素的信息?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在某些版本手机中通过UIAutomatorViewer工具无法获取手机屏幕元素的信息?相关的知识,希望对你有一定的参考价值。

如果你的工具只能获取到桌面,而进入任何一个APP界面,都无法获取到界面信息时,原因可能是sdk API版本过低,被听其他的瞎说什么手机没root,或者本身不支持之类,都是瞎扯。正确的解决方法是:

1.通过android Studio或者IDEA下载更高级的API版本,我是把最新的26,27都下了,这和手机本身是不是android最新版本没关系。

2.升级后你可能会遇到一个adb连接不上手机的问题,这个请参考:
参考技术A 先使用adb命令进行获取,然后通过UIAutomatorViewer工具进行打开就能够查看页面元素了。
1.先使用命令获取app.uix 和 app.png文件
adb shell uiautomator dump /sdcard/app.uix
adb pull /sdcard/app.uix .\images\app.uix

adb shell screencap -p /sdcard/app.png
adb pull /sdcard/app.png .\images\app.png

2.通过UIAutomatorViewer工具打开app.uix和app.png文件
获取到app.uix 和 app.png文件后,打开UIAutomatorViewer工具,点击open(图标是文件夹),Screenshot打开app.png UI XML Dump打开app.uix
然后就可以查看页面元素了
注意:
可以将命令写入脚本中来进行使用。文件存储位置可根据自己的电脑来进行设置。
以上内容均来自黑马程序员社区。想要学习的话建议看黑马的视频,还有课件还有笔记,里面还有很多的源码。
参考技术B 阎罗 商妇 男生子 黄将军(28) 藏虱 蚰蜒 牛犊 李檀斯僧孽异史氏曰 潞令异史氏曰 梦狼附则 张贡士附则 拆楼人异史氏曰 嘉平公子附则 阿宝附则

在JAVA中通过短信的形式发送到手机号码上

package com.fetion.test;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Properties;

import org.apache.commons.httpclient.Header;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod;

/**
 * API2.1调用:f.php?phone=xxxxxx&pwd=xxx&to=xxxx&msg=xxxx&type=0
 *以上接口参数详细说明 VIP API
 *1.phone:手机号
 *2.pwd:飞信密码
 *3.to:发送给谁(手机号或飞信号)
 *4.msg:飞信内容
 *5.type:操作 0(空)发送短信 1检查好友 2添加好友
 *6.u:备用参数:当发送内容为乱码时 在最后加上&u=1
 */
public class Fetion {
    //自己的手机号
    private static String PHONE = "";  
    //自己的飞信密码
    private static String PWD = "";  
    //对方的手机号
    private static String TO = "";  
    //
    private static String configuration;
   
    private Properties config = new Properties();
   
    public Fetion(){
        init();
    }
    //初始化配置文件
    public void init(){
        try {
            InputStream is = new FileInputStream("FetionConfig");
            config.load(new InputStreamReader(is));
            configuration=config.getProperty("WeekendGreetings");
            System.out.println(configuration);
            PHONE=config.getProperty("phone");
            PWD=config.getProperty("pwd");
            TO=config.getProperty("to");
            is.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
     public static void sendMsg(String _phone,String _pwd,String _to,String _msg) throws HttpException, IOException{  
                 HttpClient client = new HttpClient();  
                 PostMethod post = new PostMethod("http://3.ibtf.sinaapp.com/f.php");  
                 post.addRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=utf-8");//在头文件中设置转码   
                 NameValuePair[] data ={   
                         new NameValuePair("phone", _phone),  
                         new NameValuePair("pwd", _pwd),  
                         new NameValuePair("to",_to),  
                         new NameValuePair("msg",_msg),  
                         new NameValuePair("type","0")  
                         };  
                 post.setRequestBody(data);  
               
                 client.executeMethod(post);  
                 Header[] headers = post.getResponseHeaders();  
                 int statusCode = post.getStatusCode();  
                 System.out.println("statusCode:"+statusCode);  
                 for(Header h : headers){  
                     System.out.println(h.toString());  
                 }  
                 //String result = new String(post.getResponseBodyAsString().getBytes("utf-8"));   
                 //System.out.println(result);   
                 System.out.println("ok!");  
                 post.releaseConnection();  
             }  
     public  void start(){
         try {
            FileReader fr = new FileReader(configuration);
            BufferedReader br = new BufferedReader(fr);
            String MSG=null;
            
            while ((MSG=br.readLine())!=null) {
                Fetion.sendMsg(PHONE, PWD, TO, MSG);  
            }
            br.close();
            fr.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        
     }
     public static void main(String[] args) {  
         Fetion f = new Fetion();
         f.start();
        }  

}

以上是关于在某些版本手机中通过UIAutomatorViewer工具无法获取手机屏幕元素的信息?的主要内容,如果未能解决你的问题,请参考以下文章

UiAutomatorViewer无法获取手机截图进行元素定位的解决办法

在JAVA中通过短信的形式发送到手机号码上

我的 apk 没有安装在某些手机上,而安装在其他手机上

如何在手机APP中通过H5方式集成监控摄像头实时直播画面

如何在手机APP中通过H5方式集成监控摄像头实时直播画面

如何在手机APP中通过H5方式集成监控摄像头实时直播画面