• appium 定位弹出框时报错


    今天在做APP自动化时,发现定位弹出框无法定位,无奈,百度去找.发现了一篇不错的博客,故转载过来,供大家参考.后续会验证这个方法的可行性.

    本博客转自:http://blog.csdn.net/qq744746842/article/details/50284239

    最近在尝试做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);

    运行程序,再来尝试下识别看看。

    这里写图片描述

    好了识别成功了,说明就是一个焦点的问题导致的。所以只要让开发哥哥们加上刚才前面那句代码就可以了。

    我这边已通知开发改了,待后面验证后,再继续更新本博客.

  • 相关阅读:
    解决Manjaro i3社区版 compton默认配置不正确的问题
    Manjaro 18.1.5 i3社区版安装后初步配置
    Manjaro Linux 18 中安装配置搜狗拼音输入法
    博客园美化(最全)
    vritulbox中linux安装zookeeper报错:
    eclipse中springmvc框架出现404
    ajax
    JSP
    请求转发和重定向的区别:
    本周授课内容:http,https,Tomcat,servlet
  • 原文地址:https://www.cnblogs.com/star12111/p/8605659.html
Copyright © 2020-2023  润新知