• appium 版本是啥?
    我回去再看看。

  • #25 楼 @shixue33
    #24 楼 @miumiu
    谢谢支持!增加讨论时间是一个很好的建议,我们后面会在时间安排上增加讨论时间的比重。

    #26 楼 @tobecrazy
    感谢你的建议!这一个建议不错!我们会在策划沙龙时就在群里收集有意愿参加的同学的信息,看看大家想听什么,喜欢什么(报名时再收集有点晚了,那个时候场地、讲师这两个已经基本定下来了)。然后在报名说明中列出 topic 提纲,让报名的同学更好的确定是否适合自己。

  • 我作为组织方的一员,回应一下。

    首先,上面吐槽的情况确实存在,我也在和其它参与者的交流中了解到他们的意见,大体内容和上面的吐槽差不多。也欢迎大家在后面继续吐槽。

    确实,我们这次的 topic 和 ppt 审核没有做到足够严格,外加宣传时 “大牛” 这样的字眼用的并不准确,让大部分这次参加沙龙的参与者失望了,我在这里说一声对不起。 topic 和 ppt 确实是沙龙的灵魂所在,我们没有把握好这个重点,导致大部分人失望了。我们要引以为戒。

    我们这一期之所以会比较偏向理论,主要的出发点是上一期收集到不少参加者反馈没听懂,因此我们把相对通用的理论知识比例加大了,更偏向于一些 0 基础或者入门级的同学。但从结果看来,效果和预期相差甚远。一方面是由于宣传的偏差,这次参加的同学里面有相对丰富经验的同学比例比上次高了不少,因此这些 topic 并不十分适合他们。另一方面是部分 topic 的内容确实和移动互联网偏差比较远,因此大家也并不觉得有多大用处,感到失望是可以理解的。

    最后,我向参加了此次沙龙的同学说声抱歉,让你们失望了。同时我们会引以为戒,在后面的沙龙中改正这次存在的问题。也希望大家能继续支持我们。我们目前的力量还不是很强大,没有认识到太多广州测试界的人,也希望大家给我们推荐这方面的有比较丰富经验、愿意分享的同学,让我们能有更多机会和这些人交流、合作,并最终帮助参加的同学一起提升。谢谢!

  • 看完了 Xcode7 中你一定要知道的炸裂调试神技

    Xcode7 原来已经这么强大了。。。

  • 初识 APP 安全性测试 at 2015年10月22日

    最后的案例那个 app 太奇葩了。。。压根就没有登录啊。。。

    不是用了 https 就万无一失了,最好在应用中 hard code 校验 https 的证书信息,不信任其他所有证书信息。否则只要把自定义的 https 证书加入到手机信任列表,这些请求的内容还是能够被嗅探到。

  • Monkey 总结 at 2015年10月22日

    第一次知道 Monkey 原来有这么多功能。强!

  • 有些系统会提示这个。
    可以在 appium 源码里注释掉安装 unlock 和 setting 两个 app 的代码:

    lib/devices/android/android.js

    async.series([
        this.initJavaVersion.bind(this),
        this.initAdb.bind(this),
        this.packageAndLaunchActivityFromManifest.bind(this),
        this.initUiautomator.bind(this),
        this.prepareDevice.bind(this),
        this.checkApiLevel.bind(this),
        this.pushStrings.bind(this),
        this.processFromManifest.bind(this),
        this.uninstallApp.bind(this),
        this.installAppForTest.bind(this),
        this.forwardPort.bind(this),
        this.pushAppium.bind(this),
        this.initUnicode.bind(this),
    

    // DO NOT push settings app and unlock app
    //this.pushSettingsApp.bind(this),
    //this.pushUnlock.bind(this),

    function (cb) {this.uiautomator.start(cb);}.bind(this),
    this.wakeUp.bind(this),
    this.unlock.bind(this),
    this.getDataDir.bind(this),
    this.setupCompressedLayoutHierarchy.bind(this),
    this.startAppUnderTest.bind(this),
    this.initAutoWebview.bind(this),
    this.setActualCapabilities.bind(this)
    ], function (err) {

  • #8 楼 @anikikun 还没上。不过我在 1.4.8 上用造出来的可以用。

    你造出来后用 instruments -s devices 能看到吗?应该大致长这样:

    iPhone (9.0 Simulator) (9.0) [D959D43E-3FE6-41E8-AF06-EDC4F5973A43]
    

    添加新设备时设备名称是 iPhone (9.0 Simulator)

  • #4 楼 @monkey 同感!觉悟果然高

  • 自己造一个,牛!

    appium 官方解释是直到 1.4.11 后才正式支持 9.0 。

    iOS 9 is supported only on Appium 1.4.11 and above (1.5 beta). Refer the following link to reconfig your appium client to 1.4.11 to fix the above issue.

    Upgrade Appium Client to latest appium version

    https://discuss.appium.io/t/could-not-find-a-device-to-launch-cannot-launch-iphone-5-9-0-simulator/6093/5?u=chenhengjie123

  • 详解 Android 耗电量 API at 2015年10月20日

    :plus1:

  • #2 楼 @gaopeng1106 被你知道了 [害羞]

    Q 都上场啦,好期待~

  • 哇塞!北京又来啦!大赞!

  • 官方解释:

    iOS 9 is supported only on Appium 1.4.11 and above (1.5 beta). Refer the following link to reconfig your appium client to 1.4.11 to fix the above issue.

    原文地址:https://discuss.appium.io/t/could-not-find-a-device-to-launch-cannot-launch-iphone-5-9-0-simulator/6093/5

    原因是 iOS 9.0 的 simulator 名字改了。原来是 iPhone (8.1 Simulator), 但到了 9.0 把后面的 Simulator 去掉了。 appium 是根据 platform, deviceName 和 platformVersion 组合 simulator 的名字的,Simulator 默认会自己加上,所以开不了。

  • #10 楼 @shenkai600 我只是搬运工,现在项目中还是 E2E 。要实现上述这种测试方式需要开发和测试一起努力,而且工作量相比直接 E2E 会大一些,所以短期项目估计不会这么干。

  • 如果自己没有什么好的想法,建议用 selenium 推荐的 pageObject 模式来写用例,可维护性比较强。

    参考链接:http://selenium-python.readthedocs.org/en/latest/page-objects.html

  • appium 中 webview context 对应的是 webview 的 chrome 内核 这个进程(它是通过抓取进程数据来检查有没有 webview 的)。个人觉得应该不会你一按返回键切换回 native 界面这个进程就马上消失,而是 webview 暂时存在缓存中,直到内存不够用或者应用被关掉。

    你可以试验一下,看返回 native 界面后 chrome 内核的进程是不是还在,或者立即回去 webview 界面是重新加载还是马上就出现了。

  • #29 楼 @happystone 这个可以有。不过木有专业设备,准备用数码相机凑合一下。。。

  • #25 楼 @anikikun 你 31 号在广州啊,到时候出来聚聚吧

  • #4 楼 @apert
    #8 楼 @sl_wang
    #17 楼 @summer
    #22 楼 @john1688
    提醒一下,由于西塔出入需要凭身份证领取通行证,活动当天记得带身份证过来哦。

  • 试了下,www.testerhome.com 也不行,统一用 https://testerhome.com 访问吧。

  • Appium python 框架 at 2015年10月14日

    #19 楼 @tongshanshanshan 继续加油!以后多点过来 Testerhome 交流, sharing codes show cool

  • Appium python 框架 at 2015年10月14日

    #17 楼 @lihuazhang
    #18 楼 @monkey
    #21 楼 @anikikun
    我那只是代码洁癖,和架构师还有很大差距。。。现在深入了解过架构的程序还不够多,很多想法还很 native 。。。

  • Appium python 框架 at 2015年10月13日

    赞一个!

    这么短时间能做到这个程度很不错了,框架的层次基本已经出来了。

    下面是一些个人的建议:

    1. 既然分层了,那就尽量不要把所有执行相关的文件都放到 run.py 里面,按照层次分离成不同的文件。这样更清晰,也方便未来扩展(我估计很快你就需要扩展各个层次的内容了,各层次的功能不是很够用)
    2. appium server wrapper 这方面你可以参考下 cosyman 以前发过的帖子。他写的比较全。server 建议用进程做。
    3. 不是很理解为何要设计成运行测试和 server 要做成两个 thread 。个人觉得应该 server 是一个 process ,wrapper 提供 start 和 stop 方法,然后框架就直接 run 就好了。 run 完后调用 wrapper 的 stop 就没问题了,没啥必要做个轮询不断地检查 run 完没。
    4. 其实 appium server 还是比较稳定的,不至于会经常挂掉,所以个人觉得没太大必要在测试框架里总是去打开/关闭它,把它当 service ,启动后一直运行就好了。

    接下来是个人代码洁癖给出的吐槽,不想打击你,但忍不住要吐下槽:

    1. 一处 open file 后不 close 。建议如果没办法记得去 close 的话用 with open(path, mode) as f 来打开文件。
    2. 代码风格有点偏 Java(主要是注释的使用),建议你看下 python-client 的源码和 Google 的 Python 风格规范,代码风格和主流贴近一点,这样便于让别人阅读你的代码,进而和你合作。
    3. 从代码来看你的两个线程之间没什么资源共享,应该不需要搞线程锁什么的。不过我对线程也不是十分熟悉,你还是先看下相关资料再决定吧。
    4. 路径建议用 os.path.join ,不要把路径分隔符 hard code 进去。
    5. log 的方法名越短越好,最好 log.d, log.i 之类的就好了。另外, python 有现成的 logging 模块,功能强大,没太大必要自己实现个 Log 模块。