测试之家
  • 社区
  • 问答
  • 招聘
  • 社区学堂新
  • 开源项目
  • 活动
  • Wiki
  • 注册
  • 登录
新手
kilmer (Kilmer)
第 3230 位会员 / 2015-04-10
6 篇帖子 • 58 条回帖
7 关注者
1 正在关注
1 收藏
未设置 GitHub 信息.
  • 个人信息
  • 专栏
  • 话题
  • 回帖
  • 收藏
  • 关注中
  • 关注者
  • UiautomatorViewer 为什么在 Android6.0/7.0 上可以查找到 Webview 中的 HTML 元素 at 2017年05月18日

    “webview 控件会本地化成 view 控件”

    这个变化是是跟着 webview 控件的版本还是 Android 系统的版本?

    这部分内容有官方说明信息的链接吗?

  • UiautomatorViewer 为什么在 Android6.0/7.0 上可以查找到 Webview 中的 HTML 元素 at 2017年05月18日

    你清楚是什么原因导致的这个情况吗?因为 5.0 上面是不行,难道是 6.0,7.0 有对应内容作了更新

  • UiautomatorViewer 为什么在 Android6.0/7.0 上可以查找到 Webview 中的 HTML 元素 at 2017年05月18日

    在 6.0,7.0 的 Android 上,第一次显示不出来,第二次可以完整的 dump 出来 .

    5.0 的却不行.

    如果 webview 里面的东西都能 dump 出来,那回放脚本的时候针对 webview 中的内容就不需要走 webdriver 了吧.

    我现在很想知道具体的原因是什么。

  • UiautomatorViewer 为什么在 Android6.0/7.0 上可以查找到 Webview 中的 HTML 元素 at 2017年05月18日

    @seveniruby 思寒,请问你清楚这个问题吗?

  • 成都 Appium Girls 活动之行 at 2016年07月24日

    #7 楼 @yangweiwei 哈哈哈

  • 成都 Appium Girls 活动之行 at 2016年07月24日

    哈哈 看到两个同事

  • 想象力渐渐枯竭 at 2016年07月23日

    有时候 还得看看团队的情况

  • 想象力渐渐枯竭 at 2016年07月23日

    为啥回复不了呢

  • 说说自己做的脚本录制回放工具 at 2016年07月22日

    #28 楼 @kasi 对的,业务做整机开发的. 疲于对应各种测试需求。

  • 说说自己做的脚本录制回放工具 at 2016年07月22日

    #23 楼 @kilmer 本来是打算在 BSP 和输入输出子系统中做模块的,不过这种方式在各个 Base 代码中复用度太低就排除了.

  • 说说自己做的脚本录制回放工具 at 2016年07月22日

    #25 楼 @kasi 采用 Appium bootstrap 中的方式,映射端口,启动监听,连接,输入值传输,解析定位,回传 Json 传,再翻译显示。

  • 说说自己做的脚本录制回放工具 at 2016年07月22日

    #23 楼 @kasi 是这样的哈,不过读取,解析,翻译,呈现地点没放在全放在 PC 端 .

  • 说说自己做的脚本录制回放工具 at 2016年07月22日

    #10 楼 @jamesparagon
    第三个问题,回放的执行效率和录制时不一样
    如果录制出来的脚本直接进行回放,的确是有这个问题,除非你自己在录制功能模块中加入了计时功能,能记录测试人员录制时的时序,让然后回放的时候再体现出来 。
    不过我这个没加这个功能,录制出来的脚本也不会直接进行回放,而是需要进行逻辑处理然后验证脚本健壮性没有问题后,在入库投入到使中。

  • 说说自己做的脚本录制回放工具 at 2016年07月22日

    #10 楼 @jamesparagon
    另外一个问题,关于控件没有属性

    不要忘了是有 xpath 的哦 ,xpath 相对路径下 bounds 也可以成为标注控件的唯一属性。

  • 说说自己做的脚本录制回放工具 at 2016年07月22日

    #10 楼 @jamesparagon
    首先赞成你的说的,录制脚本这个动作存在偏差问题。(我一直认为录制这个功能有点华而不实。)
    关于控件重叠问题:
    我目前没有遇到完全重叠的情况,只要不是完全重叠就可以通过不断优化判定控件的计算方法来定位控件,目前我是这么做的,以计算器举例


    用户点击 Delete 的时候怎么完成对控件的精准筛选呢?
    看代码

    private boolean isInWidget(String bounds,int x,int y){
        int x1=0,y1=0,x2=0,y2=0;
        Matcher matcher = pattern.matcher(bounds);
        while (matcher.find()) {
            x1 = Integer.valueOf(matcher.group(1));
            y1 = Integer.valueOf(matcher.group(2));
            x2 = Integer.valueOf(matcher.group(3));
            y2 = Integer.valueOf(matcher.group(4));
        }
        if ((x1 <= x) && (x <= x2) && (y1 <= y) && (y <= y2)) {
            return true;
        }
        else {
            return false;
        }
    }       
    
    private void findWidget(Element element,int widgetX,int widgetY){
        NodeList widgets = element.getChildNodes();
        for (int i = 0; i < widgets.getLength(); i++) {
            Element widget = (Element) widgets.item(i);
            if (widget.getAttribute("clickable").equals("true") && isInWidget(widget.getAttribute("bounds"), widgetX, widgetY)) {
                widgetList.add(widget);
            }
            if (widget.getChildNodes().getLength()>0) {
                findWidget(widget, widgetX, widgetY);
            }
        }
    }
    
    private int findBestWidget(int x,int y){
        int marginX = 0;
        int marginY = 0;
        int tmpIndex = 0;
        if (widgetList.size() > 0) {
            for (int i = 0; i < widgetList.size(); i++) {
                String bounds = widgetList.get(i).getAttribute("bounds");
                // 分析bounds
                int x1=0,y1=0,x2=0,y2=0;
                Matcher matcher = pattern.matcher(bounds);
                while (matcher.find()) {
                    x1 = Integer.valueOf(matcher.group(1));
                    y1 = Integer.valueOf(matcher.group(2));
                    x2 = Integer.valueOf(matcher.group(3));
                    y2 = Integer.valueOf(matcher.group(4));
                }
                // 计算边距
                int tmpMarginX = x - x1;
                int tmpMarginY = y - y1;
                if (i > 0) {
                    if ((tmpMarginX < marginX)||(tmpMarginY < marginY)) {
                        marginX = tmpMarginX;
                        marginY = tmpMarginY;
                        tmpIndex = i;
                    }
                }
                else {
                    marginX = tmpMarginX;
                    marginY = tmpMarginY;
                    tmpIndex = i;
                }
            }
            return tmpIndex;
        }
        else {
            return -1;
        }
    }
    

    这段代码是在手机上面执行的哈,解析的数据会按照 JSON 串的形式返回给工具。

  • 说说自己做的脚本录制回放工具 at 2016年07月22日

    #4 楼 @pacerron 肯定是有现成的脚本录制工具的,先不说好不好用,只求一点能否满足业务需求,能否支持快速定制.这两点一些现成的脚本录制回放工具很难做到,再一个对回放流程的控制也极为重要 .

  • 说说自己做的脚本录制回放工具 at 2016年07月21日

    #2 楼 @jamesparagon 写了一半开会去了 . 要补上。

  • 说说自己做的脚本录制回放工具 at 2016年07月21日

    老板,加个精~

  • Mac OSX 布署 Reliable at 2016年05月01日

    #9 楼 @xdf reliable 只能调度 Macaca 编写的脚本任务吗? 如果是 Appium 编写的脚本,能否使用 reliable 开启测试,并收集测试数据。我看了一下官方的文档,没有这方面的介绍呢

  • Mac OSX 布署 Reliable at 2016年04月28日

    #9 楼 @xdf 好的 谢谢 . 我试一下.

  • Mac OSX 布署 Reliable at 2016年04月28日

    #6 楼 @xdf 在 Windows 下能部署吗?

  • Appium 1.5.0 发布 at 2016年02月26日

    UiAutomator2 和 XCUITEST 要 3 月份

  • [成都] 成都中科创达软件有限公司 诚聘测试开发工程师,自动化测试工程师 at 2016年02月26日

    #5 楼 @liuhao121 有兴趣可以把简历发送到邮箱, 如果合适会通知你面试 .

  • 在线录制脚本功能来袭,麻麻再也不用担心我写脚本了 at 2016年02月26日

    呵呵呵 ........

  • [成都] 成都中科创达软件有限公司 诚聘测试开发工程师,自动化测试工程师 at 2016年02月19日

    成都的兄弟们来看看啊

  • 1
  • 2
  • 3
  • 下一页
  • 关于 / 活跃用户 / 中国移动互联网测试技术大会 / 反馈 / Github / API / 帮助推广
    TesterHome社区,测试之家,由众多测试工程师组织和维护的技术社区,致力于帮助新人成长,提高测试地位,推进质量发展。Inspired by RubyChina
    友情链接 WeTest腾讯质量开放平台 / InfoQ / 掘金 / SegmentFault / 测试窝 / 百度测试吧 / IT大咖说
    简体中文 / 正體中文 / English

    ©testerhome.com 测试之家   渝ICP备2022001292号
      渝公网安备 50022202000435号    版权所有 © 重庆年云聚力信息技术有限公司