UiAutomator无法识别popupwindow的解决方法
来源:互联网 发布:空中乘务就业数据 编辑:程序博客网 时间:2024/05/16 10:27
问题
最近在尝试做Care Android自动化的时候,发现popupwindow按钮识别不到。类似于 ,UiAutomator仍然识别的是下一层的窗体。可能这个时候有些人就开始想,工具都识别不出来。看来这个就是注定搞不了。 实际上我们应该尝试的去分析下原因
分析
刚才前面说了,UiAutomator仍然识别的是下一层的窗体 很有可能的原因是焦点仍然处于下一层窗体的原因,带着这个问题我们自己来写个popupwindow的一个demo来验证这个问题就可以了。
这里就直接贴出popupwindow的代码(网上很多)。
// 一个自定义的布局,作为显示的内容 View contentView = LayoutInflater.from(mContext).inflate( R.layout.pop_window, null); // 设置按钮的点击事件 Button button = (Button) contentView.findViewById(R.id.button1); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(mContext, "button is pressed", Toast.LENGTH_SHORT).show(); } }); final PopupWindow popupWindow = new PopupWindow(contentView, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, true); popupWindow.setTouchable(true); popupWindow.setTouchInterceptor(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { Log.i("mengdd", "onTouch : "); return false; // 这里如果返回true的话,touch事件将被拦截 // 拦截后 PopupWindow的onTouchEvent不被调用,这样点击外部区域无法dismiss } }); // 如果不设置PopupWindow的背景,无论是点击外部区域还是Back键都无法dismiss弹框 // 我觉得这里是API的一个bug popupWindow.setBackgroundDrawable(getResources().getDrawable( R.drawable.logo)); // 设置好参数之后再show popupWindow.showAsDropDown(view);
上面的实现只是做到通过点击一个按钮后,弹出一个pipwindow,我们来试试用Uiautomator来识别下。
确实是识别不出来。那下来我们在contentView 后面加一句,让contenview处于焦点
View contentView = LayoutInflater.from(mContext).inflate( R.layout.pop_window, null);contentView.setFocusable(true);
运行程序,再来尝试下识别看看。
好了识别成功了,说明就是一个焦点的问题导致的。所以只要让开发哥哥们加上刚才前面那句代码就可以了。
参考
浮层定位不到问题 这篇文章实际已经给出了答案,只是估计很少了回去看后面的回复。
0 0
- UiAutomator无法识别popupwindow的解决方法
- PopupWindow的使用showAsDropDown()无法dismiss解决方法
- VMware无法识别USB设备的解决方法
- 无法识别maven web工程的解决方法
- 操作系统无法识别声卡的解决方法
- VMware无法识别USB设备的解决方法
- itunes无法识别iphone的解决方法
- TextMate无法识别中文的解决方法
- 关于android uiautomator自动化工程使用中文 无法识别
- 分析器错误信息: 无法识别的属性“xmlns”的解决方法
- 无法识别的配置节“connectionStrings”的解决方法
- 无法识别的配置节“connectionStrings”的解决方法
- ASP.NET无法识别的配置节"connectionStrings"的解决方法
- 光盘都无法识别解决方法
- USB键盘无法识别解决方法
- 错误信息: 无法识别的配置节“connectionStrings”[解决方法]
- 关于blue soleil无法识别某些蓝牙适配器的解决方法
- qtp录制脚本过程中无法识别控件的解决方法
- 各种排序算法的分析及java实现 - 残剑_ - 博客园
- 第八周项目3-顺序串算法(3)
- Relation Extraction中SVM分类样例unbalance data问题解决 -松弛变量与惩罚因子
- SQL Server海量数据导入的最简洁的操作方法
- C语言总结
- UiAutomator无法识别popupwindow的解决方法
- AVRWARE++开发笔记8:Atmel Studio去除拼写检查
- UVa1428 - Ping pong
- 小波前奏--短时傅里叶变换
- 浅析工业级物联网项目的快速开发
- GestureDetector详解
- 反思--Coursera作业(魔兽世界终极版)
- Android自定义view之下载控件,ProgressBar
- Android 动画框架详解,第 1 部分