在某些版本手机中通过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工具无法获取手机屏幕元素的信息?的主要内容,如果未能解决你的问题,请参考以下文章