• anyone?

  • 标记一下

  • 对不住哥们,我上次确实没理解你的意思,不知道还有直接修改 appium
    源代码这种玩儿法

    主要是刚接触 appium 一小段时间
    很多东西都不了解

  • 你是说修改 appium 的源代码?这。。。
    这个会比较困难吧,我也可以学习一下,不过这个不敢轻易动手做

  • 我查查,还有这种东西?我对 android 的理解太浅了

    谢谢了

  • 大哥,你没有用过 appium 吧

    这两个 apk 是 appium 自动安装的

    我没有写任何代码要求 appium 去安装这两个软件

    而且根据我的观察,appium 之所以安装这两个 apk
    是为了在真机中初始化运行环境,目前我没有找到有关于 appium

    有什么地方能够调控这种行为。当然,也很有可能是我学习 appium 不到家

  • 标记一下

  • 我觉他们就是故意的

    现在各种 root 工具在最新版本的小米和 Vivo 上都不起效果

    很难获取 root 权限,结果就是自动化做起来非常困难

  • 我和小米的客服联系过了,确实是这样。
    没办法,我已经放弃小米手机了

    目前在华为荣耀低版本和 ViVo X9 上脚本能够正常运行

    只是还没有完全做到自动化,正在研究 rootVivO

  • 最暴力,最彻底的方法就是 root 手机,然后关闭或者卸载系统中的安全控制软件,这样的话系统不会再弹出各种警告信息了

  • 方法应该是可行的

    不过还不是我理想中的方法

    而且如果存在各种安全机制的限制的话,在后面的功能测试过程中可能还是会存在问题

  • 可以呀

  • 我现在想到的是对手机进行 root,然后删除系统的安全控制软件

    这样在安装 apk 的时候应该就不会弹出对话框了

    可惜,现在的手机版本越高,root 越难做,很多工具都无效

  • 关键是这个 adb 命令让谁去发起呢?

  • appium 也需要切换 frame? at 2017年12月11日

    其实也就是说并没能完全按照我原本的意图做到模拟用户的操作
    我只是回避了直接点击屏幕中的控件
    而采用系统级别的 back 函数

    但是我确实是很想搞清楚为什么点击确定按钮以后,自动化脚本就失去了对屏幕的控制
    为什么就识别不到页面中的控件了

    我还是倾向于认为发生了 frame 的切换
    只是我在点击 确定 按钮的时候确实没有主动切换 frame,而这在 web 自动化测试中是不可能的
    在 web 中必须主动切换 frame,然后再主动切换回去

    但是我在点击 确定 按钮之前没有切换 frame,结果可以正常点击

    在点击 frame 之后,回不到主界面了。。。。

  • appium 也需要切换 frame? at 2017年12月11日

    我找到了结果的方法,虽然看上去完全不符合逻辑,但脚本就是按照功能测试的目标运行的:

    public void  testMePage_ClearCache() {
            goToMe();
            action.click(By.xpath("//android.widget.TextView[@text=\"清空缓存\"]"), "点击清空缓存");
            action.click(By.id("com.eisoo.anycontent:id/positiveButton"), "点击确定按钮");
    //      action.sleep(2, "调试");
    //      action.clickScreen(75, 147, 50, "");
    
    
            action.back("");
    
    
            action.click(By.id("com.eisoo.anycontent:id/ll_left"), "点击左上角的返回");
            action.click(By.xpath("//android.widget.TextView[@text=\"设置\"]"), "点击设置");
            boolean isExist = false;
            isExist = action.verifyExist(By.xpath("//android.widget.TextView[@text=\"当前缓存:0B\"]"), "断言缓存已被清除");
            FrameAssertion.isTrue(isExist, "断言缓存已被清除");
            action.click(By.id("com.eisoo.anycontent:id/ll_left"), "点击左上角的返回");
        }
    

    我这里要解释一下,在点击如图所示的确定按钮之后

    我本该做的操作是判断清除缓存的效果元素
    可是获取不到

    我就尝试点击左上角的返回图标
    还是获取不到

    这两种情况下,我开始怀疑是否存在 frame 切换的问题
    可是在尝试了 driver.switchTo()
    之后还是获取不到

    没办法,最终想到了使用
    driver.back()

    但是让我困惑的也正出现在这里!!

    driver.back() 确实起了效果,让我返回到上一个页面,但是这时候又能够点击左上角的返回图标了
    问题是上一个页面中是不存在这个图标的,大家可以看第一个图,图中是没有左上角的返回图标的

    所以,我现在怀疑存在一个时间差的问题
    但是暂时没找到 root cause

    大家有什么想法都可以留言

  • 使用这个方法点击手机左上角的返回图标
    没成功,信息显示说这个方法还没有实现

    我使用的是 AndroidDriver

  • appium 也需要切换 frame? at 2017年12月11日

    我查过了,目前 app 是 native,没有 webview

    我换了一种思路来做这个脚本
    从功能验证的角度来看是一样的

    只是为什么点击完 popup 后就不能识别页面中的元素,我还
    没有找到原因

    真心觉得 appium 有太多坑

  • 真的吗?

    我还没有写苹果端的代码,如果真是这样,那真就坑爹了

  • appium 也需要切换 frame? at 2017年12月11日

    标记一下,要不不好找自己的帖子

  • 可是这种现象在小米手机中一直存在,但是在 ViVo 手机和模拟器上又不存在
    我可以加判断,看是否有 popup 弹出

    但是总觉的是小米手机的问题,让我很不爽

  • 我明白的,正在尝试

  • 没啥纠结的,就是偶然看见,觉得有点怪怪的

  • 发现一个 testerhome 的 bug
    给自己的帖子点赞,点赞数会正常加一,但是随即刷新,点赞数又会自动减去 1,是故意这样设计还是。。。
    @Lihuazhang

  • 谢谢你的建议和提供的链接

    我都会找时间去尝试的,

    不过我现在最担心的问题是一旦弹出这个 popup 对话框

    我的脚本的事件流就中断了,即使我手动的很及时的处理掉这个 popup
    后面的填写账号和密码的动作也不能完成,真是让我很担心

    不过,你提议的方法我一定会去尝试的,这也是一个很好的学习的机会
    只不过我现在对小米真的是没信心了。。。。。