• #3 楼 @monkey 烧被子干嘛。。。要烧也是烧试卷啊。。。

  • 还记得当年高考每天考完下午的科目后还去打数个小时的球,然后只能找到一个铁杆球友一起打。。。然后铁杆球友考上了中大。。。

  • Appium 图形界面运行脚本报错,报错信息是 Error: java -version failed.Error:spawn ENOENT

    spawn ENOENT 的意思是运行某个命令时收到 ENOENT 这个错误信号(spawn 加壳后的程序是通过信号来传递信息的)。ENOENT 信号对应的信息为 No such file or directory 。出现这个错误你需要检查自己的环境配置是否正确,单独运行 java -version 命令会不会出现 No such file or directory 这个错误。

    另外从命令行运行脚本时非常慢

    慢是正常的, appium 做不到像 selenium 那么快(1 秒完成 n 个操作),因为 uiautomator 本来就不快,但速度还不至于完全无法接受。主要慢的只是输入文本的操作,点击、滑动什么的还是挺快的。

    自动安装两个 app Appium Settings 和 Unlock

    这也是正常的,因为某些命令需要用到这两个 apk,所以 appium 每次启动 session 都会安装这两个。其实还装了一个输入法,只是它没有出现在桌面上。

  • CrashMonkey4iOS 试用过程总结 at 2015年06月09日

    #10 楼 @xxfcxx gem 默认源貌似需要 ***,你可以换用淘宝源。具体怎么换可以找百度。

  • 不用每次都 find ,find 出来后的元素会在 appium 内部记录的,脚本里直接循环 table 这个数组就好了。
    find 得太多不知道会不会有影响。而且你的 log 里面有 Waited for 32032ms so far ,说明很有可能很早就已经找不到元素了。

    需要滑动可见的话可以用 scrollTo 。

  • 好正点!之前用过一段时间 Fir.im,提交代码到用户下载安装一个 CI 搞定,确实很爽。 😍
    可惜 base 广州,去不了。。。

  • 浮层定位不到问题 at 2015年06月09日

    试了下,用 selendroid(纯 selendroid,不是 appium 的 selendroid 模式)可以定位到底层的控件:

    你可以试试。

  • 看了一下,没有见到 "如果是设置的秒等待以秒计算" 这个转换算法。
    既然你说你自己看代码,那就只给你代码所在文件位置:

    https://github.com/appium/appium/blob/68ed31b1532b223d0ea5c0804eb1457a6c831688/lib/devices/common.js

    关键函数:waitForConditionimplicitWaitForCondition

    注意: 不同 webdriver 具体实现可能会有所不同

  • 最简单的做法:
    启动:使用类似 subprocess 的模块起一个进程跑 appium 命令
    关闭:杀掉 subprocess 起的进程(一般是个 Node 进程)

  • CrashMonkey4iOS 试用过程总结 at 2015年06月08日

    #8 楼 @vigossjjj
    两个问题都试过了,确实已经 fix 了。
    :plus1:

  • CrashMonkey4iOS 试用过程总结 at 2015年06月08日

    #5 楼 @vigossjjj Good!
    如果需要帮忙随时找我哈,虽然 ruby 方面语法不是很熟,但简单的 fix bug 应该还是 ok 的。

  • #4 楼 @guanlan 澄清一下,我不是大神。。。

  • CrashMonkey4iOS 试用过程总结 at 2015年06月08日

    #2 楼 @testly 赶紧报 issue 啊,有能力直接 pull request 吧。

  • 不明白 12306 干嘛要改写 APN 设置?它用的文件路径看起来是本地文件啊。网络通讯也不至于要改 APN 吧。

  • #5 楼 @app_test 你试过切换 context 到 webview 吗?

  • 总结不错。关于这些问题,我补充说明一下这些问题出现的原因:

    Q1:id 正常都是需要完整地写的,我没在虚拟机上试过使用不带包名的 id 定位元素(appium 1.3.4),但这种写法确实不是太规范。

    Q2:这应该是因为你同时连接了不止一个设备(模拟器也算),刚好 adb 默认使用的设备 API 低于 17。所以必须指定设备名称。

    Q3:魅族这个坑我也遇到过,根本原因是魅族的设备 id 没有加入到 google 默认的 Vendor ID 中。这个无解,只能自己手动加。不过去魅族论坛一般都能搜到解决方案。以前印象中官方有一个文档详细说明在各个系统怎么添加这个 id 的,但一下子找不到了。。。

    Q4:这个问题查一下 appium 官方文档其实也能知道。不支持中文,严格的说是不支持所有非 ascii 字符是 uiautomator 本来就存在的问题,因为它本来就没想过要支持。。。

    Q5:这个是因为 unicodeKeyboard 参数实质上就是在启动 session 时加入一个切换默认输入法的命令。resetKeyboard 则是在关闭 session 时把默认输入法切换回来(如果你开 session 前默认输入法就是 unicode 输入法,那它就只能还是切换回 unicode 输入法了)。这个应该和是否使用 hide keyboard 没多大关系。

    Q6:xpath 的原理是在 dump 出来的界面元素 xml 文件里面查找元素。这个 xml 文件的全部内容可以通过 log source 方法看到。想确定 xpath 有没有写错的通用方法就是在找元素前 log source 提取 xml 文件内容,然后自己用支持 xpath 搜索的 xml 文件编辑器来试试自己写的 xpath 能否找到对应元素。

    PS:麻烦排一下版,现在这样的排版可读性太差了,问题和回答之间没有间隔,问题之间也没间隔。读起来很费力。。。

  • :plus1: :plus1: 我也要努力准备 topic ,争取给大家更好的干货!
    话说美女的话你不是带了一个过来了吗?哈哈

  • #2 楼 @guanlan robotframework 这个框架本来就是用 python 实现的,它的库为了更好地调用一些 robotframework 提供的方法当然也会用 python 写。
    你想换成 Java 实现也可以啊,按照它的封装自己用 Java 再写一遍就可以,同时也要把它调用的一些 robotframework 提供的方法用 java 实现。

    你为何一定要用 Java 呢?你想把它加到自己的一些 Java 框架中给 Java 调用?那你可以去看看 Jython,它能把 python 编译成 java 的 class 文件。

  • #5 楼 @zailushang

    时间:6 月 28 日 2:00 PM ~ 6:00 PM
    地点:天河区临江大道 503 号 T26 产业园 A10
    点进去报名链接有更详细的说明。

  • CrashMonkey4Android at 2015年06月05日

    大赞!

  • 有试过 sendKeyEvent 吗?

  • 最新消息,Appium 将在下个版本加入 get_attribute('contentDescription') 方法来获取 content-desc 属性:
    https://github.com/appium/appium/pull/5189

  • Appium 1.4.0 发布 at 2015年06月04日

    #6 楼 @zb460989093 那你就下一个吧。

  • 额,弱弱地纠正下, markdown 的标题 # 号和内容之间必须有至少一个空格的。

  • 小白的测试之路 at 2015年06月04日

    说得好,学习代码的唯一途径是多写代码。代码行数都没过千是不可能算是会写代码的。

    其实我觉得书不一定要很多,但要精,而且不能光看不练。花一个多月专心消化一本书,写下一篇长长的读书笔记,这收获远比你读几本书要好。

    另外,进入性能之前不是应该先学会被测应用的一些开发技术吗?

    PS:麻烦补充一下头像。标题最好用一些标题样式。